• 9.14JavaWeb之@WebServlet注解


    9.14JavaWeb之@WebServlet注解

    什么是WebServlet注解

    概念:

    为了简化 Servlet 的配置而产生的

    作用:

    使 web.xml 从 Servlet 3.0 开始不再是必选项了

    @WebServlet注解的属性

    作用:

    • @WebServlet 将一个类声明为 Servlet

    • 该注解会在部署时被容器处理

    • 容器根据其具体的属性配置将相应的类部署为 Servlet。

    常见属性:

    属性名类型标签描述是否必需
    name String <servlet-name> 指定 Servlet 的 name 属性。 如果没有显式指定,则取值为该 Servlet 的完全限定名,即包名+类名。
    value String[ ] <url-pattern> 该属性等价于 urlPatterns 属性,两者不能同时指定。 如果同时指定,通常是忽略 value 的取值。
    urlPatterns String[ ] <url-pattern> 指定一组 Servlet 的 URL 匹配模式。
    loadOnStartup int <load-on-startup> 指定 Servlet 的加载顺序。
    initParams WebInitParam[ ] <init-param> 指定一组 Servlet 初始化参数。
    asyncSupported boolean <async-supported> 声明 Servlet 是否支持异步操作模式。
    description String <description> 指定该 Servlet 的描述信息。
    displayName String <display-name> 指定该 Servlet 的显示名。

    @WebServlet注解的使用

    • 启用注解支持

    • 使用@WebServlet注解


    启用注解支持

    过程:

    • 在web.xml的顶层标签<web-app>中设置属性

      • 设置metadata-complete

        • 属性设置为 true,则容器在部署时将只依赖 web.xml,忽略所有的注解

        • 不配置该属性,或者将其设置为 false,则表示启用注解支持

    示例注解:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0" metadata-complete="false"> <!--这里设置false以后后面的内容会失效-->
       <servlet>
           <servlet-name>MyServletDemoNo3</servlet-name>
           <servlet-class>net.biancheng.www.MyServletDemoNo3</servlet-class>
       </servlet>
      <servlet-mapping>
           <servlet-name>MyServletDemoNo3</servlet-name>
           <url-pattern>/MyServletDemoNo3</url-pattern>
       </servlet-mapping>
    </web-app>

    使用注解不必创建 web.xml 文件。

    使用@WebServlet注解

    特点:

    @WebServlet 属于类级别的注解,标注在继承了 HttpServlet 的类之上--->写在类上方

    完整写法:

    @WebServlet(urlPatterns="/MyServlet")

    常用写法:

    @WebServlet("/MyServlet") 

    注释中设置多个属性需要用,隔开

    示例代码:

    package ServletPractice;

    import javax.jws.WebService;
    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;
    import java.io.IOException;

    /**
    * 使用注释的方式实现web.xml中创建Servlet容器的效果
    * @since JDK 1.8
    * @date 2021/09/14
    * @author Lucifer
    */
    @WebServlet(asyncSupported = true, name = "myServlet", description = "name描述", loadOnStartup = 1, urlPatterns = {
           "/MyServlet", "/*" }, initParams = {
           @WebInitParam(name = "百度", value = "www.baidu.com", description = "init参数1"),
           @WebInitParam(name = "京东", value = "www.jd.com", description = "init参数2") })
    public class MyServletDemoNo4 extends HttpServlet {
       private static final long SERIALVERSIONUID = 1L;

       //doGet方法
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      }

       //doPost方法
       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      }
    }

    注意事项:

    • 通过实现 Serlvet 接口或继承 GenericServlet 创建的 Servlet 类无法使用 @WebServlet 注解。

    • 使用 @WebServlet 注解配置的 Servlet 类,不要在 web.xml 文件中再次配置该 Servlet 相关属性

    • 若同时使用 web.xml 与 @WebServlet 配置同一 Servlet 类,则 web.xml 中 <servlet-name> 的值与注解中 name 取值不能相同,否则容器会忽略注解中的配置。

    It's a lonely road!!!
  • 相关阅读:
    PHP中Foreach在引用时的陷阱 j神
    Yii中Session和cookie的用法 j神
    如何解决web大流量、高并发的问题 j神
    PHP无限级分类的递归算法 j神
    关于breadcrumbs j神
    MySQL索引分析和优化 j神
    Yii笔记 j神
    YII中的URL Management j神
    forward与redirect的区别 j神
    网络编程学习笔记
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15269302.html
Copyright © 2020-2023  润新知