ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

9.14JavaWeb之@WebServlet注解

2021-09-14 20:06:32  阅读:200  来源: 互联网

标签:xml web JavaWeb 9.14 WebServlet import 注解 Servlet


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 取值不能相同,否则容器会忽略注解中的配置。

标签:xml,web,JavaWeb,9.14,WebServlet,import,注解,Servlet
来源: https://www.cnblogs.com/JunkingBoy/p/15269302.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有