zoukankan      html  css  js  c++  java
  • 二:Servlet简介

    一、Servlet简介

    1.什么是Servlet

    Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API 动态的向客户端输出内容
    servlet规范:包含三个技术点
    1)servlet技术
    2)filter技术---过滤器
    3)listener技术---监听器
    2.Servlet快速入门

    2.1实现步骤:

    1)创建类实现Servlet接口
    2)覆盖尚未实现的方法---service方法
    3)在web.xml进行servlet的配置

    2.2但在实际开发中, 我们一般创建类继承HttpServlet

    1)创建类继承HttpServlet类
    2)覆盖doGet和doPost

    二、Servlet的API(生命周期)

    (1)Servlet接口中的方法
    1)init(ServletConfig config)
    何时执行:servlet对象创建的时候执行
    ServletConfig : 代表的是该servlet对象的配置信息
    2)service(ServletRequest request,ServletResponse response)
    何时执行:每次请求都会执行
    ServletRequest :代表请求 认为ServletRequest 内部封装的是 http请求的信息
    ServletResponse :代表响应 认为要封装的是响应的信息
    3)destroy()
    何时执行:servlet销毁的时候执行
    (2)HttpServlet类的方法
    1)init()
    2)doGet(HttpServletRequest request,HttpServletResponse response)
    3)doPost(HttpServletRequest request,HttpServletResponse response)
    4)destroy()
    (3)Servlet的生命周期
    1)Servlet何时创建
    默认第一次访问servlet时创建该对象
    2)Servlet何时销毁
    服务器关闭servlet就销毁了
    3)每次访问必然执行的方法
    service(ServletRequest req, ServletResponse res)方法

    url-pattern匹配规则

    1 精确匹配
    <url-pattern>中配置的项必须与url完全精确匹配。
    <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/user/users.html</url-pattern>
    <url-pattern>/index.html</url-pattern>
    <url-pattern>/user/addUser.action</url-pattern>
    </servlet-mapping>
      当在浏览器中输入如下几种url时,都会被匹配到该servlet
      http://localhost:8080/appDemo/user/users.html
      http://localhost:8080/appDemo/index.html
      http://localhost:8080/appDemo/user/addUser.action
    2 路径匹配
    以“/”字符开头,并以“/*”结尾的字符串用于路径匹配
    <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/user/*</url-pattern>
    </servlet-mapping>
      路径以/user/开始,后面的路径可以任意。比如下面的url都会被匹配。
      http://localhost:8080/appDemo/user/users.html
      http://localhost:8080/appDemo/user/addUser.action
      http://localhost:8080/appDemo/user/updateUser.actionl
    3 扩展名匹配
    以“*.”开头的字符串被用于扩展名匹配
    <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.action</url-pattern>
    </servlet-mapping>
      则任何扩展名为jsp或action的url请求都会匹配,比如下面的url都会被匹配
      http://localhost:8080/appDemo/user/users.jsp
      http://localhost:8080/appDemo/toHome.action
    4 缺省匹配  
    <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    二、需要注意的问题
    1 路径匹配和扩展名匹配无法同时设置
      匹配方法只有三种,要么是路径匹配(以“/”字符开头,并以“/*”结尾),要么是扩展名匹配(以“*.”开头),要么是精确匹配,三种匹配方法不能进行组合。
    2 "/*"和"/"含义并不相同
    “/*”属于路径匹配,并且可以匹配所有request,由于路径匹配的优先级仅次于精确匹配,所以“/*”会覆盖所有的扩展名匹配,很多404错误均由此引起,所以这是一种特别恶劣的匹配模式,一般只用于filter的url-pattern
    “/”是servlet中特殊的匹配模式,切该模式有且仅有一个实例,优先级最低,不会覆盖其他任何url-pattern,只是会替换servlet容器的内建default servlet ,该模式同样会匹配所有request。配置“/”后,一种可能的现象是myServlet会拦截诸*.jsp以外的请求,这是应为servlet容器有内置的“*.jsp”匹配器,而扩展名匹配的优先级高于缺省匹配,所以才会有上述现象。

  • 相关阅读:
    线性筛素数
    redis集成springmvc
    shiro登录权限认证
    jQuery插件
    maven多项目配置
    w
    触发器
    后悔了可以找我我们是朋友
    url upload data
    排队
  • 原文地址:https://www.cnblogs.com/deityjian/p/11048626.html
Copyright © 2011-2022 走看看