@WebServlet注解配置Servlet
从Servlet3.0开始,配置Servlet支持注解方式,但还是保留了配置web.xml方式,所有使用Servlet有两种方式:
- Servlet类上使用@WebServlet注解进行配置
- web.xml文件中配置
相对于之前的版本,Servlet3.0中的Servlet有以下改进:
- 支持注解配置。
- 支持异步调用。
- 直接有对文件上传的支持。
@WebServlet常用属性
属性 | 类型 | 是否必须 | 说明 |
---|---|---|---|
asyncSupported | boolean | 否 | 指定Servlet是否支持异步操作模式 |
displayName | String | 否 | 指定Servlet显示名称 |
initParams | WebInitParam[] | 否 | 配置初始化参数 |
loadOnStartup | int | 否 | 标记容器是否在应用启动时就加载这个Servlet |
name | String | 否 | 指定Servlet名称(默认包名.类名) |
urlPatterns/value | String[] | 是 | 这两个属性作用相同,指定Servlet处理的url |
description | String | 否 | Servlet 的描述信息,等价于 |
代码示例
pom.xml配置
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<!-- tomcat中也有这个api,同时存在会发生冲突 provided表明该包只在编译和测试的时候用,所以, 当启动tomcat的时候,就不会冲突了,完整依赖如下 -->
<scope>provided</scope>
</dependency>
注意版本问题和依赖的范围问题,tomcat与jsp、servlet的版本问题如下
/**
*
*/
package web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Administrator
*
*/
@WebServlet(
name = "Annolet",
urlPatterns = "/anno",
loadOnStartup = 1,
initParams = {
@WebInitParam(name = "name", value = "小明"),
@WebInitParam(name = "pwd", value = "123456")
}
)
//@WebServlet("/anno")
public class ServletAnno extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Enumeration<String> initNames = this.getInitParameterNames();
out.print("servlet的名字为"+this.getServletName());
while (initNames.hasMoreElements()) {
String name = initNames.nextElement();
out.println("参数 " + name + "的值为:" + this.getInitParameter(name) + "<br>");
}
out.flush();
out.close();
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
浏览器输出
servlet的名字为Annolet
参数 name的值为:小明
参数 pwd的值为:123456