一、前言
每个servlet项目的WEB-INF下都有一个web.xml文件,用于配置项目的路由信息的。

二、配置
1、 注册servlet
<servlet>
<servlet-name>SessionExample</servlet-name>
<servlet-class>SessionExample</servlet-class>
</servlet>
说明:

用于注册servlet

(1) servlet-name:用于配置servlet的注册名称(可自定义,默认使用项目名)。

(2) selvlet-class: 配置servlet的类的全路径。

2、映射资源
<servlet-mapping>
<servlet-name>CompressionFilterTestServlet</servlet-name>
<url-pattern>/CompressionTest</url-pattern>\
</servlet-mapping>
说明:

用于映射一个已经注册的servlet的对外访问路径

(1) servlet-name:同上,用于关联同一个项目。

(2) url-pattern: 用于配置资源的访问路径。

3、load-on-startup
<servlet> <servlet-name>SessionExample</servlet-name> <servlet-class>SessionExample</servlet-class> <load-on-startup>1</load-on-startup> </servlet>

说明:

用于标记该注册是否是在启动web应用时加载这个servlet(实例化servlet并调用init()方法)

(1) 该配置的值必须为一个整数,0的优先级最高(如果元素不存在或者为负数时,当该注册被请求时,才会被加载)。

(2) 该配置的应用场景有配合线程设置定时任务等。

4、init-param 和 context-param
<servlet>
<servlet-name>SessionExample</servlet-name>
<servlet-class>SessionExample</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
<init-param>
</servlet>
<context-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
<context-param>
说明:

init-param用于配置某个servlet的配置信息,而context-param是用于配置全局的(即在web应用中的servlet均可获取)

(1)获取配置

response.getWriter().println(this.getServletConfig().getInitParameter("encoding"));
三、细节
1. 试用通配符。只有两种通配符格式,一种是“*.扩展名”,另一种是“/”开头,并以“/*”结尾。

通配符匹配路由优先级原则:

(1) 谁的匹配度高,谁被选中

(2) “*.扩展名”的优先级更低