Servlet3的注解配置

@WebServlet注解配置Servlet

从Servlet3.0开始,配置Servlet支持注解方式,但还是保留了配置web.xml方式,所有使用Servlet有两种方式:

  1. Servlet类上使用@WebServlet注解进行配置
  2. 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的版本问题如下
《Servlet3的注解配置》

/**
 * 
 */
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
点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注