@WebServlet注解的解释和使用

2023-11-13

大家好,今天分享一下@WebServlet注解

首先,我们要知道,我们要写一个servlet程序,web,xml里的配置项很重要,里面包含了很多关于类绑定,以及服务器资源的请求路径问题(就是注册)


先把我这个看一遍,这个原生的servlet程序

将这里的servlet web.xml 文件的内容提取出来

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">


<!--  这是注册servlet-->
    <servlet>
        <servlet-name>hi</servlet-name>
<!--        hi 可以随便写,是一个别名-->
        <servlet-class >ceshi.FirstServlet</servlet-class>
<!--        这里一定要指向我们自己刚才写的类,写清楚它所在的具体路径-->
    </servlet>


<!--    这是配置它的请求路径-->
    <servlet-mapping>
        <servlet-name   > hi</servlet-name>
<!--        可以随便写,就是一个别名-->
        <url-pattern >/hi</url-pattern>
        <!-- 通过别名引用一个类,给它设置一个网络访问路径(网名),它必须以/开头。 -->
    </servlet-mapping>

</web-app>

因为, 在你依然使用原生代码进行项目开发的前提之下,你的项目里不可能只有一个页面,那就要写很多个servlet程序 ,每一个servlet程序在web.xml当中都要一次一对一的的绑定, 随着绑定的次数越来越多,就会变得难以维护

就是在这种情况下,我们使用@WebServle注解来取代原先servlet在web.xml中繁琐的配置

有关于这个@WebServle注解有几个点

  1. 它是servlet3.0 提出的
  2. 它实现的效果和原先servlet在web.xml中 配置是一模一样的

这个@WebServle注解有几个常用的属性

看这个

在这里插入图片描述

这三个是常用的

在这里插入图片描述

看上面三个属性, 其实是和下面的标签属性是对应的, 或者说等效的

回来再看我们原生的配置

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">


<!--  这是注册servlet-->
    <servlet>
        <servlet-name>hi</servlet-name>
<!--        hi 可以随便写,是一个别名-->
        <servlet-class >ceshi.FirstServlet</servlet-class>
<!--        这里一定要指向我们自己刚才写的类,写清楚它所在的具体路径-->
    </servlet>


<!--    这是配置它的请求路径-->
    <servlet-mapping>
        <servlet-name   > hi</servlet-name>
<!--        可以随便写,就是一个别名-->
        <url-pattern >/hi</url-pattern>
        <!-- 通过别名引用一个类,给它设置一个网络访问路径(网名),它必须以/开头。 -->
    </servlet-mapping>

</web-app>

name 和 <servlet-name>hi</servlet-name> 是等效的

value 和 urlPatterns属性 是等效的(就是一样的效果),但是不可以同时使用

urlPattern和 <url-pattern >/hi</url-pattern>是等效的

做个案例
在这里插入图片描述

选择webapp
在这里插入图片描述

起一个项目名

在这里插入图片描述

配置maven
在这里插入图片描述
搭建成功

在这里插入图片描述

导jar包

<dependencies>
         <!--加入servlet依赖(servlet的jar)-->
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
             <version>4.0.1</version>

         </dependency>
         <!--jsp的依赖(jsp相关的jar加进来)-->
         <dependency>
             <groupId>javax.servlet.jsp</groupId>
             <artifactId>javax.servlet.jsp-api</artifactId>
             <version>2.2.1</version>

         </dependency>


     </dependencies>

截图

在这里插入图片描述

看目录结构

在这里插入图片描述

创建一个package (不创建也可以)

在这里插入图片描述

写一个类(类名随你)

在这里插入图片描述

这样写一个最简单的servlet程序 (就是一个继承了HttpServlet 的类)

就是输出一句话,遇见你,真的好好

package shuaige.com;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class AnnotationServlet    extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("遇见你,真的好好");
    }
}

代码截图:(这样做,是为了让看我博客的人清晰的知道整个项目的目录结构)

在这里插入图片描述

加一个@WebServlet这样的注解
在这里插入图片描述

写上相应的属性

package shuaige.com;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name ="AnnotationServlet",value ="/ann")
public class AnnotationServlet    extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("遇见你,真的好好");
    }
}

点击这个位置

在这里插入图片描述

配置Tomcat
在这里插入图片描述

注意这个页面

在这里插入图片描述

这样做

在这里插入图片描述

这样做

在这里插入图片描述

启动Tomcat
在这里插入图片描述

请求我们写的路径

在这里插入图片描述

成功输出

在这里插入图片描述
到这里,我们有关于@WebServlet注解就到这里了,但是还是要强调一点:

1.首先我希望你可以将先把我这个看一遍


这是原生的servlet程序

2. 在整个过程当中,你会发现,我们根本没写web.xml

3. 我们使用注解的方式取代了web.xml

4. 其它的属性自己看看就行

好了,有关于@WebServlet注解的解释和使用就到这里,谢谢大家

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@WebServlet注解的解释和使用 的相关文章

随机推荐

  • 免费版Typora设置vue主题

    一 下载Typora与主题vue安装包 最新版版本的Typora网上开始收取费用 现在低版本的Typora仍然还是免费的 而且并不影响正常使用 下载链接在下方 并提供了vue主题文件 链接 百度网盘 请输入提取码 提取码 tdp4 二 添加
  • 【OpenCV图像处理】1.15自定义线性滤波

    自定义线性滤波 线性滤波就是卷积 实际上的作用就是降噪 卷积概念 卷积是图像处理中一个操作 是kernel在图像的每个像素上的操作 Kernel本质上一个固定大小的矩阵数组 其中心点称为锚点 anchor point 卷积如何工作 把ker
  • ggplot2读书笔记11:第八章 主题设置、存储导出

    Themes 8 1 Introduction 第八章讲的是ggplot2的主题设置 通过它你可以对数据之外的图形外观进行控制 第一版的中文版的把这一章的章节名翻译为 精雕细琢 控制主题设置主要有以下四个方面 主题元素 指的是非数据元素 p
  • 【吴恩达机器学习 - 5】揭秘学习曲线:偏差和方差与代价函数之间的相互关系(课后练习第五题-ex5)

    目录 1 回顾线性回归的正则化 1 1 代价函数 1 2 梯度 2 偏差与方差 2 1 训练集数量对 代价 的影响 3 多项式回归 3 1 多项式特征的生成 3 2 lambda对 代价 的影响 照旧 本练习的相关资料链接将会扔到评论区 大
  • cocos2d-x学习之路(14)--屏幕适配

    屏幕适配是所有手机应用都需要解决的问题 在cocos2d x 2 0之后的版本提供了相应的解决方法 设置屏幕分辨率 cocos2d x 2 1版本设置分辨率在main cpp中 通过改变FrameSize模拟相应的分辨率 CCEGLView
  • 【GoCN译文视点】何时使用 Rust, 何时使用 Go

    原文地址 https medium com codex when to use rust and when to use go 590bcbb49bec 原文作者 Joel 本文永久链接 Github 译者 tt 直截了当的说 Go 和 R
  • Flutter全部图标之快速找到合适的Icon图标

    1 由于Flutter中的图标太多 并且无法直观地进行预览 因为把所有的图标截图下来展示 以便可以快速找到你想要的图标
  • 2023.6.26

  • jdk安装

    开发十年 就只剩下这套Java开发体系了 gt gt gt 1 安装jdk 1 1 jdk下载地址 http www oracle com technetwork java javase downloads jdk8 downloads 2
  • 关于服务连接器(Servlet)你了解多少?

    文章目录 Servlet 1 简介 2 快速入门 3 执行流程 4 生命周期 5 方法介绍 6 体系结构 7 urlPattern配置 8 XML配置 最后说一句 Servlet 1 简介 Servlet是JavaWeb最为核心的内容 它是
  • [Ctf show web] 萌新计划12

    preg match 没有匹配到表达式时输出 c 利用baes64加密绕过 c a base64 decode c3lzdGVt b base64 decode dGFjIGNvbmZpZy5waHA a b
  • 1127: 矩阵乘积java

    import java util Scanner public class Main public static void main String args Scanner input new Scanner System in int m
  • springboot+redistemplate 集群配置

    redisConfig 配置类 package com zhouzhou springredistemplatedemo controller import io lettuce core cluster ClusterClientOpti
  • 前言

    es7 1中文指南 前言 数据存储 信息输出 搜索 分析 more 前言 Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎 Logstash和Beats有助于收集 聚合和丰富您的数据并将其存储在Elastic
  • Ubuntu18中NVIDIA,cuda,cudnn,pytorch安装

    注意 nvidia驱动和cuda cudnn pytroch python的对应关系 参考内容 https blog csdn net tjuyanming article details 80862290 https blog csdn
  • 数据链路层以太网协议+ARP协议

    数据链路层 1 负责相邻设备之间的传输 决定性因素是设备的MAC地址 MAC地址 6字节的整数 uint8 t addr 6 MAC地址在每一个机器上都是独一无二的 以以网协议 目的MAC地址 6字节 源MAC地址 6字节 类型 2字节 数
  • 实现element table组件内行与行之间设置间隙效果以及行内的渐变效果以及各种问题

    在项目开发中 产品提了这样一个需求 实现表格内每一行之间存在间隙以及渐变效果 具体效果如下图所示 因为element的table组件默认的是行与行挨着 所以需要更改组件的样式 具体代码如下所示 1 设置行与行之间的间距 v deep el
  • Java中如何使用消息队列实现异步(ActiveMQ,RabbitMQ,Kafka)

    一 ActiveMQ 示例 在 Java 中 可以使用消息队列实现异步处理 下面是一个简单的示例代码 用于说明如何使用 ActiveMQ 实现消息队列异步处理 添加 ActiveMQ 依赖 在 pom xml 文件中添加以下依赖
  • Unity3D开发入门教程(四)——用Lua实现组件

    Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35475 五邑隐侠 本名
  • @WebServlet注解的解释和使用

    大家好 今天分享一下 WebServlet注解 首先 我们要知道 我们要写一个servlet程序 web xml里的配置项很重要 里面包含了很多关于类绑定 以及服务器资源的请求路径问题 就是注册 先把我这个看一遍 这个原生的servlet程