Servlet3.0新增的注解功能

  • 前言:Servlet3.0带来了注解的功能, 默认不再有web.xml,如果使用的serclet是3.0或更新的版本并且需要这个文件可以在创建项目时第三步把勾打上生成web.xml。
    1.png
    使用这个注解的功能可以大大降低配置xml所花费的时间和精力。以下介绍两个注解:@WebServlet, @WebFilter

    1,先了解下tomcat和servlet以及jdk版本的对应关系

    官网文档地址:http://tomcat.apache.org/whichversion.html

当前时间版本关系:

2,@WebServlet注解

  • 说明:该注解用来配置Servlet,其将会在服务器启动时被tomcat容器处理,容器将根据具体的属性配置将相应的类部署为 Servlet。
  • 参数的说明:
    注意:以下所有属性均为可选属性,但是 vlaue 或者 urlPatterns 通常是必需的,且二者不能共存。

    2.png
  • 实例:

    package servlet;
    import java.io.IOException;
    import java.io.PrintWriter;
    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;
    //注解配置
    @WebServlet(
    value =  "/servlet/Demo" , //url
    name = "Demo", //servlet名称
    loadOnStartup = 1, //加载顺序
    initParams = {
            @WebInitParam(name = "username", value = "admin"),
            @WebInitParam(name = "password", value = "123456")
            } //初始化参数
    )
    public class Demo extends HttpServlet {
    
        private String username;
        private String password;
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public void init() throws ServletException {
            this.setUsername(this.getInitParameter("username"));
            this.setPassword(this.getInitParameter("password"));
        }
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.println("<h2>"+this.getUsername()+"</h2>");
            out.println("<h2>"+this.getPassword()+"</h2>");
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    }

    3,@WebFilter注解

  • 说明:该注解用来配置过滤器。该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。
  • 参数的说明:
    注意:以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存

    3.png
Last modification:September 22nd, 2019 at 09:55 pm

One comment

  1. TurboHsu     iPhone /    Safari

    前前前前前排!

Leave a Comment