• 【servlet3.0新特性】Annotation注解配置


    servlet3.0新特性Servlet3.0引入的若干重要新特性,包括异步处理、新增的注解支持、可插性支持等等,为读者顺利向新版本过渡扫清障碍.Servlet3.0新特性概述Servlet3.0作为JavaEE6规范体系中一员,随着JavaEE6规范一起发布。

    1.Servlet、Filter、Listener无需在web.xml中进行配置,可以通过Annotation进行配置;

    2.模块化编程,即将各个Servlet模块化,将配置文件也分开配置。

    3.Servlet异步处理,应对复杂业务处理;

    4.异步Listener,对于异步处理的创建、完成等进行监听;

    5. 文件上传API简化;

    Annotation支持

    servlet3.0不需要在web.xml中配置跳转的servlet而是采用注解的方法:

      @WebServlet 用于将一个类声明为 Servlet�该注解将会在部署时被容器处理�容器将根据具体的属性配置将相应的类部署为 Servlet。该注解具有下表给出的一些常用属性�以下所有属性均为可选属性�但是 vlaue 或者 urlPatterns 通常是必需的�且二者不能共存�如果同时指定�通常是忽略 value 的取值
      @WebServlet 主要属性列表属性名 类型 描述  
      name String 指定 Servlet 的 name 属性�等价于 <servlet-name>。如果没有显式指定�则该 Servlet 的取值即为类的全限定名。
      value String[] 该属性等价于 urlPatterns 属性。两个属性不能同时使用。  
      urlPatterns String[] 指定一组 Servlet 的 URL 匹配模式。等价于 <url-pattern> 标签。  
      loadOnStartup int 指定 Servlet 的加载顺序�等价于 <load-on-startup> 标签。  
      initParams WebInitParam[] 指定一组 Servlet 初始化参数�等价于 <init-param> 标签。  
      asyncSupported boolean 声明 Servlet 是否支持异步操作模式�等价于 <async-supported> 标签。  
      description String 该 Servlet 的描述信息�等价于 <description> 标签。  
      displayName String 该 Servlet 的显示名�通常配合工具使用�等价于 <display-name> 标签。

    实例代码如下:

     1 import java.io.IOException;
     2 import java.io.PrintWriter;
     3  
     4 import javax.servlet.ServletConfig;
     5 import javax.servlet.ServletException;
     6 import javax.servlet.annotation.WebInitParam;
     7 import javax.servlet.annotation.WebServlet;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11  
    12 /**
    13  * 
    14  * Descriptions
    15  */
    16 @WebServlet(name = "/HelloServlet", urlPatterns = {"/HelloServlet"}, loadOnStartup = 1, initParams = {
    17         @WebInitParam(name = "name", value = "jsjtt"), @WebInitParam(name = "age", value = "20")})
    18 public class HelloServlet extends HttpServlet {
    19     private static final long serialVersionUID = 1L;
    20  
    21     public HelloServlet() {
    22         super();
    23     }
    24  
    25     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    26         doPost(request, response);
    27     }
    28  
    29     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
    30             IOException {
    31         request.setCharacterEncoding("UTF-8");  
    32         ServletConfig config = getServletConfig();  
    33         PrintWriter out = response.getWriter();  
    34         out.println("<html>");  
    35         out.println("<body>");  
    36         out.println("Hello world"+"<br />");  
    37         out.println(config.getInitParameter("name"));  
    38         out.println("</body>");  
    39         out.println("</html>");  
    40     }
    41  
    42 }

    filter接口定义和servlet是类似的

    下面是一个简单的示例�
    @WebFilter(servletNames = {"SimpleServlet"},filterName="SimpleFilter")  public class LessThanSixFilter implements Filter{...}       
    如此配置之后�就可以不必在 web.xml
    中配置相应的 <filter> 和 <filter-mapping> 元素了�
    容器会在部署时根据指定的属性将该类发布为过滤器。
    它等价的 web.xml 中的配置形式为�
    <filter>   
    <filter-name>SimpleFilter</filter-name>   
    <filter-class>xxx</filter-class> 
    </filter>  <filter-mapping>   
    <filter-name>SimpleFilter</filter-name>   
    <servlet-name>SimpleServlet</servlet-name> 
    </filter-mapping>


    listener配置方法:

    @WebListener
    该注解用于将类声明为监听器�被 @WebListener 标注的类必须实现以下至少一个接口

    ServletContextListener 
    ServletContextAttributeListener 
    ServletRequestListener 
    ServletRequestAttributeListener 
    HttpSessionListener 
    HttpSessionAttributeListener  
    该注解使用非常简单其属性如下
    @WebListener 的常用属性属性名 类型 是否可选 描述   value String 是 该监听器的描述信息。 
    一个简单示例如下
    @WebListener("This is only a demo listener") 
    public class SimpleListener implements ServletContextListener{...}
     
  • 相关阅读:
    Maven---右键Servlet模板
    付宇泽 20191128-1 总结
    付宇泽20191121-1 每周例行报告
    付宇泽20191114-1 每周例行报告
    安装tensorflow时出现找不到模块问题
    罗杨美慧 20191128-1 总结
    罗杨美慧 20191121-1 每周例行报告
    罗杨美慧 20191114-1 每周例行报告
    罗杨美慧 20191107-1 每周例行报告
    罗杨美慧 20191031-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/4875712.html
Copyright © 2020-2023  润新知