@WebServlet注解的解释和使用

news2024/11/18 13:31:50

大家好,今天分享一下@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注解的解释和使用就到这里,谢谢大家

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥杯】历届真题 完全二叉树的权值(省赛)Java

【资源限制】 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 【问题描述】 给定一棵包含N个节点的完全二叉树&#xff0c;树上每个节点都有一个权值&#xff0c;按从上到下、从左到右的顺序依…

SpringBoot将项目打包成JAR包或者WAR包

SpringBoot将项目打包成JAR包或者WAR包前言打包成JAR包打包成WAR包打包遇到的问题Maven环境问题跳过测试并打包前言 本文开发工具使用IDEA&#xff0c;已配置好Maven环境&#xff0c;如果未配置的可以参考另外一篇文章: Maven如何配置阿里镜像及安装全步骤 打包成JAR包 默认…

【C++】继承——切片、隐藏、默认成员函数、菱形

文章目录一、继承概念及定义二、赋值转换——切片三、继承的作用域——隐藏四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、菱形继承及菱形虚拟继承八、继承与组合九、结语一、继承概念及定义 概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最…

刚毕业小白软考中级什么专业合适?

如果只是想考取软考中级证书&#xff0c;可以考虑比较热门的考试项目&#xff0c;当然具体还是要看和自己的职业发展和需求是否匹配为前提&#xff0c;这样对于自己今后的职业生涯规划也有一定帮助。中级科目介绍&#xff1a;软考中级备考攻略&#xff1a;反正只要认真备考&…

使用PyTorch构建卷积GAN源码(详细步骤讲解+注释版) 02人脸图片生成 上

阅读提示&#xff1a;本篇文章的代码为在普通GAN代码上实现人脸图片生成的修改&#xff0c;文章内容仅包含修改内容&#xff0c;全部代码讲解需结合下面的文章阅读。 相关资料链接为&#xff1a;使用PyTorch构建GAN生成对抗 本次训练代码使用了本地GPU计算。 1 CelebADataset类…

2023.1.23-1.29 AI行业周刊(第134期):春节回家乡的感受

春节的假期&#xff0c;时间过得很快。 年前回家在路上的时候&#xff0c;就考虑到过年时间短暂&#xff0c;但是当大年初六和家乡别离&#xff0c;和大姐二姐们再见的时候&#xff0c;心中还是充满了不舍。 2022年初回家过年的画面还印在脑海中&#xff0c;和家乡相聚的频率…

【自然语言处理】文本分析:非结构化信息分析科学与应用导论(主题建模)

文本分析&#xff1a;非结构化信息分析科学与应用导论&#xff08;主题建模&#xff09;1.介绍 文本聚类可以将数据&#xff08;这里即指文本&#xff09;按照一定规则划分为不同的群组&#xff0c;理想情况下可以从聚类结果中发现一些有趣的模式。不同聚类方法的一致性意义和…

QT 使用线程完成串口数据的读写,并把数据传递给主线程

1、之前做串口通信的时候直接在主线程 用了api实现&#xff0c;这种只做个串口助手是OK的&#xff0c;但是在大型项目中这样做会占用主线程的时间&#xff0c;数据量大的时候不确定有多卡顿。 2、看了网上很多资料&#xff0c;没一个写的是对的&#xff0c;主要错在 QSerialPo…

Linux-用户及文件权限管理

目录1、Linux 用户管理1.1 查看用户1.2 创建用户1.3 用户组1.4 删除用户和用户组2、Linux文件权限2.1 查看文件权限2.2 变更文件所有者2.3 修改文件权限3、补充1、Linux 用户管理 Linux可以实现多用户登录&#xff0c;A和B用户可以同时登录同一台主机&#xff0c;虽然他们的文…

IT帮助台如何帮助企业进行人力资源管理

在大多数组织中&#xff0c;HR 服务管理流程从内部聊天或电话开始&#xff0c;以 Word 文档和 Excel 工作表结束。以这种老式的方式管理所有这些信息变得非常乏味&#xff0c;因为 组织成长。大多数组织&#xff0c;即使有人力资源管理系统&#xff0c;也使用过时的系统&#x…

2-3-内存泄漏和内存溢出

1、内存泄漏和内存溢出区别 内存泄漏&#xff1a;是指程序在申请内存后&#xff0c;无法释放已申请的内存空间&#xff0c;一次内存泄漏似乎不会有大的影响&#xff0c;但内存泄漏堆积后的后果就是内存溢出。 内存泄漏是指你向系统申请分配内存进行使用(new)&#xff0c;可是…

vue指令

文章目录1.vue基础1.el挂载点2.data数据对象2.vue指令1.v-text2.v-html3.v-on4.v-show5.v-if6.v-bind7.v-for8.v-model1.vue基础 1.el挂载点 在el命中的内部可以无限嵌套el绑定的元素&#xff0c;可以支持id选择器&#xff0c;class选择器&#xff0c;标签选择器。并且双标签…

element - - - - - Form表单的resetFields()方法没有生效?

万事如伊 大吉大利 Form表单的resetFields方法没有生效?1. 场景描述2. 问题分析3. 解决办法关于element组件&#xff0c;相信各位同学都不陌生。其各个组件不可谓不好用&#xff0c;能够快速的帮助开发人员进行排版布局&实现效果。 但是总会遇到一些不可避免的坑。 1. 场…

win10中pycharm使用django问题总结

1.问题一出现问题&#xff1a;ERROR: Could not find a version that satisfies the requirement XXX解决方法直接选用pip源并且信任它的来源就可以解决这种问题。pip install django版本号 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 这里将pip源换成…

公司招了个在腾讯拿35K的人,让我见识到什么才叫测试天花板···

一进公司&#xff0c;看见门外有几个带着行李在外面等待的人&#xff0c;应该就是来入职的&#xff0c;果不其然&#xff0c;在进公司后&#xff0c;召开了新人见面会&#xff0c;让他们做了自我介绍和职业规划以及部门&#xff0c;令我印象最深刻的就是一个刚刚从腾讯离职出来…

【C++修炼之路】类和对象(上)—— 入门篇

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录一、前言二、初识面向过程和面向对象三、类的引入和定义四、类的访问限定符及封装1、访问限定符2、封装五、类的作用域六、类的实…

Day03-无处不在的数据

文章目录Day03-无处不在的数据无处不在的数据分析案例1&#xff1a;论文选题案例2&#xff1a;产品面试案例3&#xff1a;工作汇报用户的依赖性案例4&#xff1a;选票逻辑几乎所有岗位都需要数据分析Day03-无处不在的数据 昨天&#xff0c;我们为你打开了数据分析的大门&#…

vue生命周期钩子函数

1 vue的生命周期的钩子函数有哪些 beforeCreate &#xff1a;在调用beforeCreate时&#xff0c;已完成的内容是创建了一个空的Vue实例对象&#xff0c;这个对象上有默认的生命周期函数和默认的事件created &#xff1a;此阶段时&#xff0c;数据配置结束。包括数据侦听、计算属…

((蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第2天】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有74天

&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6; 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&a…

【JavaScript速成之路】JavaScript变量

&#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录前言1&#xff0c;JavaScript变量1.1&#xff0c;变量的含义1.2&#xff0c;变量…