[Spring实战系列](19)Servlet不同版本之间的区别
Posted SunnyYoona
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Spring实战系列](19)Servlet不同版本之间的区别相关的知识,希望对你有一定的参考价值。
1. 2.3版本
2.3版本
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Servlet 2.3 Web Application</display-name> </web-app>
这个有个缺点:
The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,
context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,
welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,
login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)". eoso/WebRoot/WEB-INF
意思是说 web-app里的标签有一定的顺序。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!--servlet--> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.qunar.fresh.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login.do</url-pattern> </servlet-mapping> <servlet> <servlet-name>AccessServlet</servlet-name> <servlet-class>com.qunar.fresh.servlet.AccessServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AccessServlet</servlet-name> <url-pattern>/a/*</url-pattern> </servlet-mapping> </web-app>
需改成:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!--servlet--> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.qunar.fresh.servlet.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>AccessServlet</servlet-name> <servlet-class>com.qunar.fresh.servlet.AccessServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AccessServlet</servlet-name> <url-pattern>/a/*</url-pattern> </servlet-mapping> </web-app>
2. 2.4版本
2.4版本
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
2.4以上版本即可解决上面问题。
但是2.4及以下版本会有一个问题:(多个url不能映射到同一个servlet)
<servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/index</url-pattern> <url-pattern>/login</url-pattern> </servlet-mapping>
3. 2.5版本
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
2.5以上版本即可解决多个url不能映射到同一个servlet的问题。
4. 3.0版本
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <web-app> <display-name>Servlet 3.0 Web Application</display-name> </web-app>
Servlet3.0随J2EE6一起发布,web.xml配置文件中包含: 默认页配置、session超时配置和错误提示页配置。
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" > <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page> </web-app>
以上是关于[Spring实战系列](19)Servlet不同版本之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
Spring实战系列-BeanPostProcessor的妙用
Spring Boot 实战:如何自定义 Servlet Filter
Spring Boot 2 实战:如何自定义 Servlet Filter
Spring实战----Security4.1.3鉴权之美--基于投票的AccessDecisionManager实现及源码分析