javaweb springmvc web.xml配置详解
前置控制器
老的javaweb 项目中是通过 来指定资源的同时可以也可以通过 @WebService()注解替代老版的方式为
<!--可以使用@WebService()注解替代-->
<servlet>
<!-- 指定servlet的名称-->
<servlet-name>hello</servlet-name>
<!--指定servlet的类名称-->
<servlet-class>com.lzp.servlet.HelloServlet</servlet-class>
</servlet>
<!-- 用来定义servlet所对应的URL,包含两个子元素-->
<servlet-mapping>
<!-- 指定servlet的名称和上面servlet的名称一致-->
<servlet-name>hello</servlet-name>
<!--指定servlet所对应的URL,页面地址为 <url-pattern>时访问hello的servlet类-->
<url-pattern>/hello</url-pattern>
<!--<url-pattern>/test</url-pattern>-->
</servlet-mapping>
</web-app>
如果使用ssm框架使用了springmvc则变成同时使用
@Controller
@RequestMapping("/book")
来指定资源
<!--DispatcherServlet 前置控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!--一定要注意:如果使用的是ssm我们这里加载的是总的配置文件,之前被这里坑了!-->
<param-value>classpath:springmvc-servlet.xml</param-value>
<!--参数>=0 容器在启动的时候就加载这个servlet 参数<0 或者没有指定时,则表示容器在该servlet被选择时才会去加载 -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!--所有静态资源(js,css,image,html等)的访问都将交给该servlet处理,而jsp页面则交给servlet容器内置的JSP servlet处理。-->
<!--如果参数是/* jsp页面都被DispatcherServlet拦截处理了,并且DispatcherServlet自己还处理不好这些jsp页面(不能对jsp页面进行解析),
所以直接返回它们的源码信息,并且编码都变得不可控,编码还由原来的UTF-8变成了GBK。-->
<url-pattern>/</url-pattern>
</servlet-mapping>
中文乱码的过滤器
如果需要自己写过滤器只需将 filter-classclass的路径改为自己的类路径
<!--encodingFilter中文乱码的过滤器-->
<filter>
<!--注意这里是filter,不要配置成servlet-->
<!--过滤器名称-->
<filter-name>encodingFilter</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>
</filter>
<!--过滤器映射-->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<!--过滤器的完整类名-->
<url-pattern>/*</url-pattern>
</filter-mapping>
过期时间
<!--Session过期时间-->
<session-config>
<session-timeout>15</session-timeout>
</session-config>
完整的web.xml配置为
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--DispatcherServlet 前置控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!--一定要注意:如果使用的是ssm我们这里加载的是总的配置文件,之前被这里坑了!-->
<param-value>classpath:springmvc-servlet.xml</param-value>
<!--参数>=0 容器在启动的时候就加载这个servlet 参数<0 或者没有指定时,则表示容器在该servlet被选择时才会去加载 -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!--所有静态资源(js,css,image,html等)的访问都将交给该servlet处理,而jsp页面则交给servlet容器内置的JSP servlet处理。-->
<!--如果参数是/* jsp页面都被DispatcherServlet拦截处理了,并且DispatcherServlet自己还处理不好这些jsp页面(不能对jsp页面进行解析),
所以直接返回它们的源码信息,并且编码都变得不可控,编码还由原来的UTF-8变成了GBK。-->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--encodingFilter中文乱码的过滤器-->
<filter>
<filter-name>encodingFilter</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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--Session过期时间-->
<session-config>
<session-timeout>15</session-timeout>
</session-config>
</web-app>