Servlet笔记(10):Web.xml 标签配置

标签配置(servlet3.x版本可以使用注解替换)

  1. Servlet、Filter、Lintener成功运行,除了有自定义的实现,还需要在web.xml中进行配置。
  2. Lintener 中HttpSessionBindingListener``HttpSessionActivationListener两类监听器不需要配置。
  3. servlet3.x 版本可以使用注解替换配置,而且可以省去 web.xml 配置文件(见博客系列笔记)

Servlet

标签详解
  1. 一个 Servlet的配置,包括servletservlet-mappingload-on-startupinit-param 等标签
  2. servlet 标签: 是一个Servlet 的定义标签,包括:
  • servlet-name: 配置 Servlet 的名称,如 LifeCycleServlet,可以取任一字符串,保证在web.xml中唯一
  • servet-class: 配置该 Servlet 的类,需要完整的包。如 com.learning.servlet2x.base.LifeCycleServlet
  1. servlet-mapping标签: 配置该Servlet的访问方式,包括:
  • servlet-name:引用 servlet 标签中定义的名称
  • url-pattern:配置该Servlet的访问方式。url-pattern 配置的值前面加上服务器IP、端口、Web 应用程序的路径,就是这个 Servlet的具体访问路径
  1. url-pattern详解:
  • 允许使用通配符 *?*代表任意长度的字符串,?表示任意字符
  • JavaEE 5 以后一个servlet-mapping可以配置多个 url-pattern。例如:可以同时将 LifeCycleServlet 配置多个映射方式。不论用jsp后缀、php后缀访问,都会正常显示
 <servlet-mapping>
  	<servlet-name>LifeCycleServlet</servlet-name>   
  	<url-pattern>/servlet/LifeCycleServlet</url-pattern>  
  	<url-pattern>/servlet/LifeCycleServlet.jsp</url-pattern>  
  	<url-pattern>/servlet/LifeCycleServlet.asp</url-pattern>  
  	<url-pattern>/servlet/LifeCycleServlet.php</url-pattern>  
  </servlet-mapping>
  1. 缺省的Servlet配置
  • 所有的 web 访问都是去找 Servlet,服务器会有默认的缺省Servlet,如访问静态资源,就会去访问缺省Servlet,然后该Servlet会帮忙访问静态资源,显示给浏览器
  • Tomcat 中这个缺省的 Servlet为其 Web.xml 中定义的 org.apache.catalina.servlets.DefaultServlet
  • 自己定义缺省的 Servlet 的方法为,url-pattern,只配置 / 即可
<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

  1. load-on-startup: 配置该 Servlet 的加载方式,可选值为 0 和 1 或正整数。 Struts、Spring等框架都会使用该参数来预先加载核心的 Servlet
  • 服务器启动后加载:load-on-startup=1。 当是正整数时,1的优先级最高。(1>2)
  • 第一次请求才去加载:load-on-startup=0
代码
<!--Servlet 生命周期-->
<servlet>
    <servlet-name>LifeCycleServlet</servlet-name>
    <servlet-class>com.learning.servlet2x.base.LifeCycleServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LifeCycleServlet</servlet-name>
    <url-pattern>/lifeCycleServlet</url-pattern>
</servlet-mapping>

参数配置

标签详解
  1. context-param: context上下文参数,所有servlet、filter都可以使用。
  • 包括标签名param-name、标签值param-value 两个子标签
  • 通过ServletContext对象获取标签数据
  1. init-param: 初始化参数,供某一个 Servlet、Filter 单独使用
  • 包括标签名param-name、标签值param-value 两个子标签
  • 通过方法 getInitParameter() 获取标签数据
代码
<context-param>
    <param-name>context_user</param-name>
    <param-value>Admin</param-value>
</context-param>

<init-param>
    <param-name>user</param-name>
    <param-value>Sam</param-value>
</init-param>
  1. init-paramcontext-param 只能配置简单的字符串类型的参数,更灵活的参数配置,推荐写到配置文件

Session 标签

  1. session-config标签 :session的配置标签,包括子标签如下
  • session-timeout:配置session的有效期,单位是分钟。Tomcat 中默认超时时间为 20 分钟
  1. session 的超时时间为 MaxInactiveInterval属性,可以利用setMaxInactiveInterval(int s)getMaxInactiveInterval() 分别设置于获取session的有效期,单位是秒

Filter

  1. 一个 Filter 需要配置filter``filter-mapping等标签

  2. filter标签:配置 Filter 名称,实现类以及初始化参数,可以同时配置多个初始化参数。

  3. filter-mapping标签: 配置什么规则下使用这个 Filter

  • url-pattern: 配置 url 的规则,可以配置多个,也可以使用通配符 *

  • dispatcher: 配置到达 servlet 的方式,可以同时配置多个。则默认为REQUEST。它们的区别是:

    • REQUEST :表示仅当直接请求servlet时才生效
    • FORWARD :表示仅当某servlet通过forward转发到该servlet时才生效
    • INCLUDE :Jsp中可以通过<jsp:include/>请求某 servlet, 只有这种情况才有效
    • ERROR :Jsp中可以通过<%@page errorPage="error.jsp" %>指定错误处理页面,仅在这种情况下才生效
  • url-patterndispatcher 是且的关系,只有满两个的条件,该 Filter 才能生效

  1. 一个Web程序可以配置多个Filter ,访问有先后顺序,filter-mapping配置在前面的Filter 执行要早于配置在后面的Filter

其他

  1. listener 监听器标签:一般配置在servlet 标签前面。主要有listenerlistener-class
  2. mime-mapping: 如果Web应用具有用到特殊的文件,希望能保证给他们分配特定的MIME类型。一般可以配置一些允许下载的文件类型
<!-- 下载文件类型 -->
<mime-mapping>
	<extension>doc</extension>
	<mime-type>application/msword</mime-type>
</mime-mapping>

<mime-mapping>
	<extension>xls</extension>
	<mime-type>application/msexcel</mime-type>
</mime-mapping>

<mime-mapping>
	<extension>pdf</extension>
	<mime-type>application/pdf</mime-type>
</mime-mapping>

  1. env-entry 资源注射标签。
  • 初始化参数与上下文参数都需要我们主动去获取,而资源注射的内容不需要主动获取,Web启动的时候会主动把资源内容注射到servlet 中
  • 这种功能是需要通过注解完成的,@javax.annotation.Resource 负责这个功能
  • env-entry 一般包括三组子标签<env-entry-name>、<env-entry-type>、<env-entry-value>,局限是只能配置 java.lang 包下的标准变量
  • 在代码中,用 @Resource(name="")注解标注定义好的属性变量,一定要指定名字,且需要与签定义的一致,这样,在web启动的时候,资源就会注入其中,不需要自己主动去获取
<env-entry>
	<env-entry-name>uer</env-entry-name>
	<env-entry-type>java.lang.String</env-entry-type><!-- 只能配置java.lang包下的标准变量-->
	<env-entry-value>Sam</env-entry-value>
</env-entry>
//指定名字,与配置的一致
@Resource(name="uer")
private String user;

参考

  1. 源码地址
  2. Servlet学习笔记(三):Servlet基础

Fork me on Gitee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值