web.xml 文件
web.xml是web项目的配置文件,一般的web工程都会用到web.xml来配置,方便大型开发。web.xml主要用来配置Filter,Listener,Servlet等。但是web.xml并不是必须的,一个web工程可以没有web.xml文件。
web.xml 的加载过程
web 容器的加载顺序:
ServletContext -> context-param -> listener -> filter -> servlet。并且这些元素可以配置在文件中的任意位置,不会因为filter在web.xml文件中写在listener前面就先加载filter。
web 工程加载 web.xml 过程:
- 启动一个 web 项目,web 容器会读取它的配置文件 web.xml,读取 <listener> 和 <context-param> 两个结点;
- 创建一个 ServletContext(Servlet 上下文),这个 web 项目的所有部分都将共享这个上下文;
- 容器将 <context-param> 转换为键值对,并交给 ServletContext;
- 容器创建<listener>中的类实例,创建监听器;
web.xml文件元素
<web-app>:根元素,用于存放其他元素
<display-name>:用于标记这个 Web 应用的名称
<display-name>Demo</display-name>
<discription>:用于描述 Web 应用
<disciption>This is a demo</disciption>
<context-param>:声明应用范围内的初始化参数。用于向ServletContext提供键值对,即应用程序上下文信息。listener,filter在初始化时会用到这些上下文信息。可以通过 getServletContext().getInitParameter() 得到。
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>/WEB-INF/log4j2.xml</param-value>
</context-param>
<filter>:主要用于对用户请求 request 进行预处理,也可以对 response 进行后处理
<filter>
<filter-name>setCharacterEncoding</filter-name>
<filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listerner>:监听器
<listener>
<listerner-class>com.listener.SessionListener</listener-class>
</listener>
<servlet>:用于注册 servlet,包含如下几个主要的子元素
<servlet-name>:用于设置 Servlet 的注册名称
<servlet-class>:用于设置 Servlet 的完整类名
<init-param>:用来定义参数,在 servlet 类中通过 getInitParamenter() 方法访问初始化参数。
<load-on-startup>:指定 Web 应用启动时装载 Servlet 的次序。当值为正数或零时 Servlet 容器按数值从小到大加载,当值为负或未定义时 Servlet 容器将在 Web 客户首次访问这个 servlet 时加载它。
<servlet-mapping>:用于映射一个已注册的Servlet的一个对外访问路径,包含两个子元素
<servlet-name>:用于指定 Servlet 的注册名称
<url-pattern>:用于指定 Servlet的 对外访问路径
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>com.servlet.ServletDemo1</servlet-class>
<init-param>
<param-name>account</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/ServletDemo1</url-pattern>
</servlet-mapping>
<session-config>:会话超时配置,单位为min
<session-config>
<session-timeout>120</session-timeout>
</session-config>
<welcome-file-list>:欢迎文件页,显示时按顺序从第一个找起,如果存在就显示,如果不存在就找下一个
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>