web.xml常用配置详解
context-param
指定 ServletContext(上下文) 配置文件路径,基本配置一般是Spring配置文件,或者是spring-security的配置文件。注意springmvc的配置文件是在servlet那里加载,mybatis的配置文件是在spring的主配置文件里注册sqlSessionFactory的时候加载的。
<context-param>
<param-name>contextConfigLocation</param-name>
<!--<param-name>指定上下文名称,一般为:名称+ConfigLocation后缀,如:contextConfigLocation,不可随意定义,否则指定的配置文件无法加载成功,实际上它是org.springframework.web.servlet.FrameworkServlet中的一个成员变量 -->
<param-value>classpath:spring-security.xml</param-value>
<!--<param-value>指定上下文路径,如:classpath:applicationContext.xml-->
</context-param>
listener
<listener-class>基本配置包含ContextLoaderListener ,即spring监听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
servlet
<servlet-name>Servlet名称,可以自定义,但是需要遵守规则:比如指定为Spring,那么最好在classpath路径中配置Spring-servlet.xml,否则需要在子元素<init-param>特别指出
<servlet-class>因为要配置MVC,所以指定为:org.springframework.web.servlet.DispatcherServlet
-
<init-param>[定义容器启动时初始化的配置文件,作用主要是指定自定义配置文件的路径,貌似可以指定多个]
<param-name>[contextConfigLocation]
<param-value>[可以自定义,如:classpath:spring-servlet.xml,如果不定义,那么默认为:classpath:${servlet-name}-servlet.xml]
<load-on-startup>[定义为1,表示启动等级]
<!-- 配置 spring mvc 的核心控制器 -->
<servlet>
<servlet-name>springmvcDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置初始化参数,用于读取 springmvc 的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher.xml</param-value>
</init-param>
<!-- 配置 servlet 的对象的创建时间点:应用加载时创建。取值只能是非 0 正整数,表示启动顺 序 -->
<load-on-startup>1</load-on-startup>
</servlet>
servlet-mapping
与servlet相对应
- <servlet-name>与对应的servlet的name保持一致
- <url-pattern>一般定义为“/”,表示所有请求都通过DispatcherServlet来处理,但是这样处理的话会使静态资源都经过springmvc的*调度器,而*调度器不处理静态资源请求。所以我还是习惯用一个*.do这样的特殊路径格式。
<servlet-mapping>
<servlet-name>springmvcDispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
filter
过滤器,常用于字符集编码过滤,解决中文乱码问题
<!-- 配置 springMVC 编码过滤器 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 设置过滤器中的属性值 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!-- 启动过滤器 -->
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
filter-mapping
与filter相对应
<!-- 过滤所有请求 -->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
由于idea默认的web.xml的版本太老,一般我们还是要用一用新版本的,可以在模块那里删掉原来的web.xml,新建一个web1.xml就会是4.0版本的。但是记得改回web.xml这个名字。当然,更方便的就是直接粘贴下面的配置就行了。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>