Servlet 3.0 注解开发

文章目录

  • Servlet3.0注解开发
  • 修改idea创建注解的servlet模板
    • 内容讲解
  • 关于servlet3.0注解开发的疑问_配置路径省略了属性urlPatterns
    • 内容讲解
    • 内容小结

在这里插入图片描述


Servlet3.0注解开发

【1】问题

说明:之前我们都是使用web.xml进行servlet映射路径的配置。这样配置的弊端:web.xml中具有非常多个配置信息,显得非常臃肿并且容易出错。

【2】解决问题

使用 web.xml 配置映射路径的方式属于servlet2.5的技术。

从 Servlet3.0(tomcat7往上都支持Servlet3.0) 开始引入注解配置访问servlet取代了web.xml配置。

<!--  TODO:想使用注解开发导入的Servlet依赖必须是3.0以上的      -->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope>
</dependency>

【3】配置步骤:

1.在包上右键---new---servlet(create new Servlet)
2.输入类名
3.在方法体内输入逻辑代码
4.在浏览器地址栏中输入访问的路径

【4】实现

1.在包上右键—new—servlet(create new Servlet)

在这里插入图片描述

2.输入类名

在这里插入图片描述

3.在方法体内输入逻辑代码

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("/annoDemo01Servlet")
public class AnnoDemo01Servlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("注解开发");}
}

4.在浏览器地址栏中输入访问的路径访问即可


修改idea创建注解的servlet模板

内容讲解

1.File----Settings

在这里插入图片描述

2.找到 servlet 的模板,按照如下修改

在这里插入图片描述

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
@javax.servlet.annotation.WebServlet("/${Entity_Name}")
public class ${Class_Name} extends javax.servlet.http.HttpServlet {protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {doGet(request,response);
}protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {}
}

关于servlet3.0注解开发的疑问_配置路径省略了属性urlPatterns

内容讲解

正常我们在 WebServlet 注解中配置的路径赋值给属性 urlPatterns,但是urlPatterns不能省略的,在一个注解中,如果含有多个属性,并且每个属性都有默认值,此时给value赋值可以省略value属性。

在这里插入图片描述

注意啦:在 WebServlet 注解中 value 等同于 urlPatterns 属性。

在这里插入图片描述

内容小结

  1. 在WebServlet注解中value等同于urlPatterns属性,实际开发中我们实际上省略的是value属性

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;
/*1.从servlet3.0开始使用注解@WebServlet取代了在web.xml配置servlet开发2.@WebServlet注解常见属性:1) String name() default ""; name = "demo01AnnoServlet" 相当于web.xml中的标签:<servlet-name>demo01AnnoServlet</servlet-name>在注解开发中可以不书写该属性name2) String[] urlPatterns() default {};urlPatterns = "/demo01AnnoServlet"相当于web.xml中的标签:<url-pattern>/demo01AnnoServlet</url-pattern>3)在注解@WebServlet中属性value等同于属性urlPatterns,定义value属性的原因是我们在使用servlet注解开发的时候可以省略value属性,@WebServlet("/demo01AnnoServlet") 省略了value*/
//@WebServlet(value = "/demo01AnnoServlet",name = "demo01AnnoServlet")
//@WebServlet(urlPatterns = "/demo01AnnoServlet")
//@WebServlet(value = "/demo01AnnoServlet")
@WebServlet("/demo01AnnoServlet")
public class Demo01AnnoServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("注解开发servlet,是不是很爽");}
}

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

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

相关文章

力扣每日一题——数组能够形成多少对

目录 题目链接&#xff1a;2341. 数组能形成多少数对 - 力扣&#xff08;LeetCode&#xff09; 题目描述 解法一&#xff1a;List集合 Java写法&#xff1a; 运行时间 C写法&#xff1a; 解法二&#xff1a;Set集合 Java写法&#xff1a; 运行时间 C写法 上述两种方法…

开源项目-投票管理系统

哈喽,大家好,今天主要给大家带来一个开源项目-投票管理系统 投票管理系统主要有首页,发起投票,管理投票,参与投票,查看投票等功能 首页 为用户提供了一键导航到各个功能模块的便捷途径。 新增投票 用户可以在此轻松创建新的投票活动,设置投票主题、选项等信息。 管理…

高级java每日一道面试题-2024年10月27日-Redis篇-jedis和redisson有哪些区别?

如果有遗漏,评论区告诉我进行补充 面试官: jedis和redisson有哪些区别? 我回答: 在Java高级面试中&#xff0c;Jedis和Redisson的区别是一个常见且重要的话题。以下是对这两个Java客户端库的详细对比&#xff1a; 设计思想与实现方式 Jedis&#xff1a; 设计思想&#xff…

[Python]K小姐经营着一家蛋糕店,她的蛋糕店有 n 种口味的蛋糕。这 n 种口味的蛋糕在 A 工厂和 B 工厂都有生产。

问题来源&#xff1a;【秋招突围】2024届秋招-京东笔试题-第三套_牛客网 问题描述 K小姐经营着一家蛋糕店&#xff0c;她的蛋糕店有 n种口味的蛋糕。这 n 种口味的蛋糕在 A 工厂和 B 工厂都有生产。 对于每种口味的蛋糕&#xff0c;如果 A 工厂生产的口感值为 AiA_iAi​&…

设计模式讲解01-建造者模式(Builder)

1. 概述 建造者模式也称为&#xff1a;生成器模式 定义&#xff1a;建造者模式是一种创建型设计模式&#xff0c;它允许你将创建复杂对象的步骤与表示方式相分离。 解释&#xff1a;建造者模式就是将复杂对象的创建过程拆分成多个简单对象的创建过程&#xff0c;并将这些简单…

【Python ASR 】模型对比 whisper 和 funasr

【Python ASR 】模型对比 模型差异比较大的几段结果最后相关网站 模型 Paraformer-zh&#xff08;离线免费-推荐&#xff09; 语音识别&#xff0c;带时间戳输出&#xff0c;非实时 SenseVoiceSmall&#xff08;离线免费&#xff09; 多种语音理解能力&#xff0c;涵盖了自动语…

Python爬虫抓取三个网站上的英语每日一句

一、引言 大学英语学习需要巩固高中语法&#xff0c;补充四六级词汇&#xff0c;增加英语语感&#xff0c;提升英语的运用能力。学好英语有很多种方法&#xff0c;采用句子来突破英语语法、词汇、口语和听力的方法简单有效&#xff0c;值得提倡。李阳就是采用这种方法来教授英…

PostgreSQL 学习笔记:PostgreSQL 主从复制

PostgreSQL 笔记&#xff1a;PostgreSQL 主从复制 博客地址&#xff1a;TMDOG 的博客 在现代应用程序中&#xff0c;数据库的高可用性和扩展性是至关重要的。PostgreSQL 提供了主从复制功能&#xff0c;可以在多个数据库实例之间复制数据&#xff0c;以实现冗余和负载均衡。本…

[云讷科技]DASA数字孪生机器人概念

DASA数字孪生机器人概念 我们在 虚幻引擎 (UE) 的帮助下在 DASA 中建立了数字孪生机器人概念。 UE 是 Epic Games 开发的 3D 计算机图形游戏引擎&#xff0c;广泛应用于视频游戏、电影和电视。我们在 DASA 中利用强大的 UE 功能来实现外观逼真的数字机器人&#xff0c;并允许与…

探索Python新境界:Buzhug库的神秘面纱

文章目录 探索Python新境界&#xff1a;Buzhug库的神秘面纱第一部分&#xff1a;背景介绍第二部分&#xff1a;Buzhug库是什么&#xff1f;第三部分&#xff1a;如何安装Buzhug库&#xff1f;第四部分&#xff1a;Buzhug库函数使用方法第五部分&#xff1a;Buzhug库使用场景第六…

微信小程序的上拉刷新与下拉刷新

效果图如下&#xff1a; 上拉刷新 与 下拉刷新 代码如下&#xff1a; joked.wxml <scroll-view class"scroll" scroll-y refresher-enabled refresher-default-style"white" bindrefresherrefresh"onRefresh" refresher-triggered&qu…

Java唯一键实现方案

数据唯一性 1、生成UUID1.1 代码中实现1.2 数据库中实现优点缺点 2、数据库递增主键优点 3、数据库递增序列3.1 创建序列3.2 使用序列优点缺点 在Java项目开发中&#xff0c;对数据的唯一性要求&#xff0c;业务数据入库的时候保持单表只有一条记录&#xff0c;因此对记录中要求…

《向量数据库指南》——BGE-M3:引领多模态RAG系统新风尚!

BGE-M3 BGE-M3 是一个多功能的 Embedding 模型,能够处理多种语言的文本,并支持不同的粒度级别。例如,您可以处理短句,也可以处理长达 8192 个 Token 的长文档。这个 Embedding 模型还能够输出两种不同的向量类型:稠密向量(Dense embedding)和稀疏向量(Sparse embeddin…

在Ubuntu上安装TensorFlow与Keras

文章目录 1. 查看系统和Python版本信息1.1 查看Ubuntu版本信息1.2 查看Python版本信息 2. 安装pip2.1 下载get-pip.py2.2 运行get-pip.py2.3 查看pip版本 3. 安装Jupyter Notebook3.1 安装Jupyter Notebook3.2 运行Jupyter Notebook3.3 安装jupyter-core3.4 配置Jupyter Notebo…

kubesphere jenkins自动重定向 http://ks-apiserver:30880/oauth/authorize

问题&#xff1a;登陆kubesphere的jenkins Nodeport IP :Port 46.XXX.XXX.16:30180 自动跳转失败 http://ks-apiserver:30880/oauth/authorize?client_idjenkins&redirect_urihttp://46.XXX.XXX.16:30180/securityRealm/finishLogin&response_typecode&scopeopen…

江协科技STM32学习- P34 I2C通信外设

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

系统地介绍Qt的QtConcurrent模块

本文使用了AI生成的内容&#xff0c;请注意甄别&#xff01; 本文系统地介绍Qt的QtConcurrent模块&#xff0c;它允许开发者无需使用低级线程原语&#xff08;如互斥锁、读写锁、等待条件或信号量&#xff09;即可编写多线程程序。下面将由浅入深地逐步介绍这一内容&#xff1a…

ctfshow(91,96,97)--PHP特性

Web91 源代码&#xff1a; show_source(__FILE__); include(flag.php); $a$_GET[cmd]; if(preg_match(/^php$/im, $a)){if(preg_match(/^php$/i, $a)){echo hacker;}else{echo $flag;} } else{echo nonononono; }Notice: Undefined index: cmd in /var/www/html/index.php on…

大学生软件测试2024(练习赛)

本人不太会java语法&#xff0c;主要是本专业老师主讲java&#xff0c;所以不得不使用java语言进行编写&#xff0c;不当之处请见谅&#xff01; 背景说一哈&#xff0c;有点摸鱼的成分&#xff0c;主要是期末课设和这个有关&#xff0c;想学着看看&#xff0c;不知道能不能得…

【Arch Linux 上安装 Appium 】

安装 Node.js 和 npm sudo pacman -S nodejs npm安装 Appium sudo npm install -g appium安装 Appium Doctor&#xff08;可选&#xff09; # Appium Doctor 是一个工具&#xff0c;用于检查你的系统是否满足 Appium 运行所需的所有依赖项 sudo npm install -g appium-docto…