Servlet2.5是JavaEE5.0规范,最低运行环境为JDK5.0以及Tomcat5.0。而Servlet3.0是JavaEE6.0规范,最低环境为JDK6.0以及Tomcat7.0。Servlet3.0的新特性主要分为以下几个点:
- 基于注解配置三大组件
- 文件上传API的优化
- 异步处理
- 组件可插性
- 动态注册三大组件(ServletContext)
- SPI - ServletContainerInitializer 机制
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
基于注解的配置
基于web.xml的配置与基于注解的配置,在Servlet3.0中,可以混合使用
@WebServlet
用来注册servlet组件,在servlet2.x中,需要在web.xml中配置servlet标签:
<servlet>
<!--servlet描述-->
<description>Servlet描述</description>
<!--servlet展示名称-->
<display-name>TestServlet</display-name>
<!--servlet名称-->
<servlet-name>TestServlet</servlet-name>
<!--servlet class-->
<servlet-class>com.yangsx95.demo.TestServlet</servlet-class>
<!--servlet 初始化参数-->
<init-param>
<param-name>param1</param-name>
<param-value>value1</param-value>
</init-param>
<init-param>
<param-name>param2</param-name>
<param-value>value2</param-value>
</init-param>
<!--servlet加载顺序-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--servlet url 映射-->
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
在3.0 可以使用如下方式注册一个Servlet:
//@WebServlet("test") // value 就是 urlPatterns,是默认属性,二者不能同时使用
@WebServlet(
description = "Servlet描述",
displayName = "TestServlet",
name = "TestServlet",
initParams = {
@WebInitParam(name="param1", value = "value1"), @WebInitParam(name="param2", value = "value2")},
loadOnStartup = 1,
urlPatterns = {
"test",