servlet注解开发
文章目录
- servlet注解开发
- 内容回顾
- 响应对象 HttpServletResponse
- 重定向与请求转发
- ServletConfig
- 简介
- 案例
- ServletContext
- 简介
- 案例
- Servlet 注解开发
- 简介
- 注解使用
- 案例
- @WebServlet 注解详细参数
- 综合的增删改查案例
- 登录注册功能
servlet注解开发
内容回顾
响应对象 HttpServletResponse
针对页面发送的请求做出数据的响应,向页面输出信息,包括文本、图片、视频等格式的文
件;
响应的内容分为三部分:响应行、响应头、响应体
① 响应行主要是关于协议和状态码的描述
② 响应头主要是用来进行响应头信息的设置
③ 响应体主要是响应给页面数据
重定向与请求转发
实现页面跳转的两种方式;重定向是客户端行为,请求转发时服务端行为;
重定向客户端的请求地址会发生变化,请求转发客户端请求地址不会发生变化;
重定向客户端至少会有2次请求发送,请求转发客户端只有一次请求发送;
重定向在页面跳转时不能携带数据,因为两个请求 request 是不一样的;
请求转发可以在一次转发内进行数据的传递,多次转发则不允许携带数据;
请求转发是在服务器端使用 request 对象来实现;
转发的方法:getRequestDispatcher("请求/页面").forward(req,resp)
重定向也在在服务端使用 response 对象来实现;
重定向的方法:sendRedirect("请求/页面")
ServletConfig
简介
跟请求对象/响应对象一样,也是在容器初始化时被创建好的对象;
该对象可用于容器初始化时 servlet 辅助信息的设置;
例如:编码格式的设置、servlet 在执行时需要的一些数据。
在 web.xml 中 servlet 标签下可以进行 ServletConfig 辅助信息的设置
格式:
<servlet>
<servlet-name>**</servlet-name>
<servlet-class>**</servlet-class>
<init-param>
<param-name>key</param-name>
<param-value>value</param-value>
</init-param>
<init-param>
<param-name>key1</param-name>
<param-value>value1</param-value>
</init-param>
</servlet>
ServletConfig 对象和 Servlet 类是一对一的关系;只有 web.xml 配置文件中配置了
<init-param></init-param> 标签的 Servlet 类才能后进行ServletConfig 对象
中参数的获取;不能被其他 Servlet 类共享;
ServletConfig 对象获取,可以在 init(ServletConfig config) 方法中获取,也
可以 Servlet 类其他方法中通过 getServletConfig() 进行获取;
再使用方法 getInitParameter("key") 进行对象中数据的获取;如果是多个参数的获取
getInitParameterNames()
案例
jsp 页面

web.xml

servlet 类

ServletContext
简介
类似于 ServletConfig;只是作用范围比 ServletConfig 更大;ServletConfig 是
针对某一个 Servlet 类进行初始参数的设置;
ServletContext 是针对所有的 Servlet 类进行初始参数的设置;

ServletContext 参数的设置依然在 web.xml 中进行;
使用 <context-param></context-param> 标签进行设置;
格式:
<context-param>
<param-name>key</param-name>
<param-value>value</param-value>
</context-param>
注意:ServletContext 是全局的,所以 <context-param> 标签需要和所有 servlet
标签同级;
ServletContext 对象中参数的获取依然使用 getInitParamter(key) 方法 ;如果是
多个参数的获取用 getInitParameterNames()
案例
jsp 页面

web.xml

servlet 类

Servlet 注解开发
简介
Servlet 注解开发实际上就是使用 Java 注解替换 web.xml 配置文件;Servlet 注解
(@WebServlet)开发需要 Servet 版本 3.0 以上;
注解使用
传统的配置文件使用需要在 web.xml 中编写请求与Servlet关联的配置信息

如果使用注解模式,配置文件就可以简略不写

@WebServlet("/servletAnnotation") 注解就相当于是 web.xml 中的配置信息描
述;
但是需要注意,注解和配置文件不能共存,意思就是在 web.xml 中如果写了配置信息,那么
该 Servlet 类就不能使用注解;反之,如果某个 Servlet 类使用了注解的模式进行开
发,那么在 web.xml 中就不能有该 Servlet 类配置信息
案例
注解开发案例
jsp 页面

Servlet 类

运行结果

@WebServlet 注解详细参数
如果 @WebServlet("/servletAnnotation") 注解内部只有一个内容,那么该内容
"/servletAnnotation" 表示该 Servlet 要拦截的请求地址;
该注解内部有更多的关于请求参数、容器加载时机等属性的设置;

详细的注解模式参数使用

综合的增删改查案例
登录注册功能
① 创建一个 user 表,记录用户的账号密码以及注册的时间
② 编写注册登录的页面
③ 进行注册登录的功能实现
项目结构

user 表

登录页面

注册页面

相关文章:
servlet注解开发
文章目录servlet注解开发内容回顾响应对象 HttpServletResponse重定向与请求转发ServletConfig简介案例ServletContext简介案例Servlet 注解开发简介注解使用案例WebServlet 注解详细参数综合的增删改查案例登录注册功能servlet注解开发 内容回顾 响应对象 HttpServletRespon…...
mysql一联合主键
联合主键就是用2个或2个以上的字段组成主键。用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。 可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以了&…...
openpnp - 判断吸嘴是否指定了正确的旋转轴
文章目录openpnp - 判断吸嘴座是否指定了正确的旋转轴概述笔记吸嘴单独矫正的时候Calibrate precise camera ↔ nozzle N1 offsets.ENDopenpnp - 判断吸嘴座是否指定了正确的旋转轴 概述 如果没有指定吸嘴座的正确旋转轴, 会因为对应吸嘴该旋转时不旋转, 而是另外一个空闲的吸…...
【办公类-19-03】办公中的思考——Python批量统一文件名的序号(保教主任整理打印文件)
背景需求:为迎接督导检查,保教主任从各条线收集文本资料。并在每个文件名称前手动编号。但是她嘀咕道:”为什么两套资料放在一个文件里就不是按照数字序号排序?,有的是1X-,有的是40X,看起来很乱…...
MySQL约束
约束约束总结约束 1、概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2、目的:保证数据库中数据的正确、有效性和完整性。 3、分类: 注意:约束是作用于表中字段上的,可以在创建表/修改表…...
x86 平台利用 qemu-user-static 实现 arm64 平台 docker 镜像的运行和构建
文章目录[toc]关于 docker 版本查看是否开启 experimental 功能开启 experimental 功能查看当前环境平台拉取一个 arm 平台的容器运行一个 arm 平台的容器整一个 qemu-user-static注册可支持的架构解释器尝试启动 arm64 镜像尝试启动 ppc64le 镜像后台运行 arm64 容器build 一个…...
找工作经验分享
好的简历的特点:简洁:不要使用花里胡俏的简历模板,一般就是一行行写下来那种就行主次分明:一定要有重点,让面试了解你强项是什么首先当然是突出技术,不要花大批篇幅在个人信息、兴趣爱好等,重点…...
C语言学习之路--操作符篇,从知识到实战
目录一、前言二、操作符分类三、算术操作符四、移位操作符1、左移操作符2、右移操作符五、位操作符拓展1、不能创建临时变量(第三个变量),实现两个数的交换。2、编写代码实现:求一个整数存储在内存中的二进制中1的个数。六、赋值操…...
【华为OD机试2023】端口合并 C++ Java Python
【华为OD机试2023】端口合并 C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出,input/cin接收输入、…...
C++常用头文件整理
#include <iostream> 输入输出流,调用该函数使用cin,cout#include <iomanip> mainp是mainpular(操纵器)的缩写,可以调用一些函数,如fixed()<<setprecision()等#include <cmath> 调用数学函数#include &l…...
Linux内核4.14版本——drm框架分析(2)——connector分析
目录 1. drm_connector结构体 1.1 struct list_head head 1.2 struct drm_mode_object base 1.3 base.properties 1.4 uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER] 1.5 struct drm_encoder *encoder 1.6 struct list_head probed_modes 1.7 struct list_head mod…...
dev GridControl 按条件纵向合并单元格
dev GridControl 按条件纵向合并单元格 gridView5.OptionsView.AllowCellMerge true; gridView5.CellMerge gridView5_CellMerge; //自定义合并单元格监听事件void gridView5_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e){int rowHandle1…...
aws eks 集群初始化过程中pause容器的启动逻辑
eks集群默认策略在磁盘使用量达到threshold时会清除镜像,其中pause镜像也可能会被清除 https://aws.amazon.com/cn/premiumsupport/knowledge-center/eks-worker-nodes-image-cache/ pause容器能够为pod创建初始的名称空间,pod的内的容器共享其中的网络空…...
Numpy专栏目录(长期更新)
文章目录数组基础文件与字符串多项式分布Numpy绝对可以说是支撑Python地位的最重要的包了,几乎所有能叫出名的Python计算库,都不可避免地调用了Numpy,Numpy官网也列出了一些,大致如下图这样,堪称科学计算领域的瑞士军刀…...
English Learning - L2 第1次小组纠音 [ɑː] [ɔː] [uː] 2023.2.25 周六
English Learning - L2 第1次小组纠音 [ɑː] [ɔː] [uː] 2023.2.25 周六共性问题分析大后元音 [ɑː]大后元音 [ɔː]后元音 [uː]我的发音问题后元音 [uː]大后元音 [ɑː] 和 [ɔː]纠音过程第一次第二次第三次共性问题分析 大后元音 [ɑː] 嘴唇过于松散,没…...
博客系统程序(页面设计)
咱们学习javaEE的目的就是完成一个网站.在当前学习的基础上,已经可以完成我们的博客系统的页面的设计了!!!首先我们要进行统筹规划:首先我们的博客页面将会有4个页面:1.博客列表页2.博客详情页显示一个博客的具体内容:3.登录页就是用户输入用户名和页面的地方4.博客编辑页发布新…...
【死锁的排查工具有哪些?】
死锁是指两个或多个进程(线程)相互等待对方持有的资源,导致无法继续执行的情况。在并发编程中,死锁是一个常见的问题,需要使用专门的工具来进行排查和解决。 以下是常用的死锁排查工具: jstack:…...
JUC包:CyclicBarrier源码+实例讲解
1 缘起 上篇文章讲到了CountDownLatch:https://blog.csdn.net/Xin_101/article/details/129116170 作为同系的佼佼者,不得不提CyclicBarrier, 设计理念相似,都是多线程等待,但是,应用的技术以及功能不同&a…...
Trace、Metrics、Logging 选型
背景分布式追踪的起源自从微服务的兴起开始,整个系统架构开始变得极为庞大和复杂,但是服务之间的调用关系,调用消耗时间等等信息却依然是半黑盒的状态。为了能够将调用的链路进行串联,将系统的各种指标数据展示出来以使得系统的链…...
Java验证码
文章目录一、验证码概述二、Java原生验证码1、随机数字验证码2、随机数字和字母验证码3、运算验证码三、引入三方验证码一、验证码概述 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
