web.xml详解(filter、Listener、servlet配置)

web.xml是什么?

web.xml是web项目的配置文件,一般的web工程中都会用到web.xml来配置,方便大型开发。
web.xml主要是来配置Filter、Listener、Servlet等。但是web.xml并不是必须的,一个web工程可以没有web.xml

web工程加载web.xml过程

web容器的加载顺序 ServletContext --> context-param --> listener --> filter --> servlet
这些元素可以配置在文件中的任意位置,不会因为filter在web.xml中写在listener前面就先加载filter
加载过程顺序如下:
	启动一个web项目,web容器会读取它的配置文件web.xml,读取<listener>和<context-param>两个节点
	创建一个ServletContext(Servlet上下文),这个web项目的所有部分都将共享这个上下文
	容器将<context-param>装换为键值对,并交给ServletContext
	容器创建<listener>中的类的实例,创建监听器

web.xml文件元素详解

1、schema 模式

web.xml的模式文件是Sun公司定义的,每一个web.xml文件的根元素<web-app>中都必须表名这个web.xml使用的是哪个模式文件,其他元素都放在<web-app></web-app>中
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>

2、Web应用名称

用于标记这个特定的Web应用的名称
<display-name>Tomcat Example</display-name>

3、Web应用描述

<discription>Tomcat Example servlets and JSP pages.</discription>

4、上下文参数

声明应用范围的初始化参数。用于向Servlet+Context提供键值对,即应用程序上下文信息。
后续的listener,filter在初始化时会用到这些上下文信息,在servlet里边可以通过getServletContext().getInitParameter("context/param")得到
<context-param>
	<param-name>log4jConfiguration</param-name>
	<param-value>/WEB-INF/log4j2.xml</param-value>
</context-param>

5、过滤器

filter可以认为是servlet的一种加强版,主要用于对用户请求request进行预处理,也可以对response进行后处理,是个典型的处理链。
使用filter的完整流程是:filter对用户请求进行预处理,接着将请求HttpServletRequest交给Servlet处理并生成响应,最后Filter再对服务器响应httpServletResponse进行后处理。
Servlet与Servlet具有完全相同的生命周期,而filter可以通过<init-para>进行初始化参数的配置,并通过FilterConfig传送给filter
Filter的配置就是将此项目与一个实现javax.servlet.Filter接口的类相关联。
<filter>
	<filter-name>setCharacterEncoding</filter-name>
	<filter-class>com.filter.setCharacterEncodingFilter</filter-class>
	<init-para>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-para>
</filter>
<filter-mapping>
	<filter-name>setCharacterEncoding</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

6、监听器

监听器Listener,他是实现javax.servlet.ServletContextListener接口的服务端程序,他也是随着web应用的启动而启动,只初始化一次,随web应用的停止而销毁,
主要作用:
	做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等。
<listener>
	<listener-class>com.listener.SessionListener</listener-class>
</listener>

7、servlet

servlet是运行在服务器端的小程序
<servlet>
	<servlet-name>proxoolServletConfigurator</servlet-name>
	<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
	<init-param>
		<param-name>xmlFile</param-name>
		<param-value>WEB-INF/classes/proxool.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name></servlet-name>
	<url-pattern></url-pattern>
</servlet-mapping>
<servlet-name></servlet-name> 指定servlet的名称
<servlet-class></servlet-class> 指定servlet的类名称
<jsp-file></jsp-file> 指定web站台中的某个JSP网页的完整路径
<init-param></init-param> 用来定义参数,可有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数
<load-on-startup></load-on-startup>指定当Web应用启动时,装载Servlet的次序。当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet。当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它。
<servlet-mapping></servlet-mapping> 用来定义servlet所对应的URL,包含两个子元素
<servlet-name></servlet-name> 指定servlet的名称
<url-pattern></url-pattern> 指定servlet所对应的URL

8、会话超时配置

单位为min
<session-config>
	<session-timeout>120</session-timeout>
</session-config>

9、欢迎文件页

<welcome-file-list>
	<welcome-file>index.jsp</welcome-file-list>
	<welcome-file>index.html</welcome-file-list>
	<welcome-file>index.htm</welcome-file>
</welcome-file-list>
显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用,如果第一个不存在,就找第二个,以此类推

10、设置jsp

<jsp-config>包括<taglib>和<jsp-property-group>两个子元素
<jsp-property-group>元素主要有八个子元素,分别是:
	<description>:设定的说明
	<display-name>:设定名称
	<url-pattern>:设定值所影响的范围,如/CH2或/*.jsp
	<el-ignored>:若为true,表示不支持EL语法
	<scripting-invalid>:若为true,表示不支持<% scripting %>语法
	<page-encoding>:设定JSP网页的编码
	<include-prelude>:设置JSP网页的抬头,扩展名.jspf
	<include-coda>:设置JSP网页的结尾,扩展名为.jspf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值