一般的Java Web项目,不论是传统Servlet项目还是Spring mvc项目,web.xml的配置都是重要的一环。

常用标签汇总

  web.xml中有许多标签,这里列举一些常用的标签

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">

<!-- display-name元素提供GUI工具可能会用来标记这个特定的Web应用的一个名称。 -->
<display-name></display-name>

<!-- context-param元素声明应用范围内的初始化参数 -->
<context-param></context-param>

<!-- filter 过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。 -->
<filter></filter>

<!-- filter-mapping 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。 -->
<filter-mapping></filter-mapping>

<!-- listener 对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知。Listener元素指出事件监听程序类。 -->
<listener></listener>

<!-- servlet 在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的。 -->
<servlet></servlet>

<!-- servlet-mapping 服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。 -->
<servlet-mapping></servlet-mapping>

<!-- session-config 如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值。 -->
<session-config></session-config>

</web-app>

context-param

<context-param>标签一般形式:

1
2
3
4
5
<context-param>
<description></description>
<param-name></param-name>
<param-value></param-value>
</context-param>

&ensp;&ensp;启动一个web项目时,容器会去读取web.xml中的<context-param>标签,并创建一个ServletContext上下文对象。并且会将<context-param>标签以键值对的形式存入ServletContext对象中。
&ensp;&ensp;在一个Servlet中可以调用getServletContext().getInitParam(name)来获取值。

listener

<listener>标签一般形式:

1
2
3
4
<listener>
<description>描述</description>
<listener-class>指定类</listener-class>
</listener>

&ensp;&ensp;<listener-class>中指定的类必须实现ServletContextListener接口,这个接口中定义了contextInitialized(ServletContextEvent event)contextDestroyed(ServletContextEvent event)。类似于<context-param>, web项目启动时会创建<listener></listener>中的类实例,同时会调用contextInitialized()方法。可以在该方法中调用ServletContextEvent.getgetServletContext().getInitParameter()来获取<context-param>中设置的值。