9.14JavaWeb之@WebServlet注解
2021/9/14 20:35:13
本文主要是介绍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 取值不能相同,否则容器会忽略注解中的配置。
这篇关于9.14JavaWeb之@WebServlet注解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南