当前位置: 首页 > news >正文

jakarta EE学习笔记-个人笔记

@WebServlet注解:声明一个类为Servlet

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {// 指定Servlet的影子String name() default ""; // 匹配地址映射(URL)String[] value() default {};// 指定URL匹配模式或匹配地址映射,不能与value属性一起用String[] urlPatterns() default {};// 指定Servlet加载顺序,默认为第一次请求时加载int loadOnStartup() default -1;// 指定一组Servlet初始参数WebInitParam[] initParams() default {};// 指定是否支持异步操作boolean asyncSupported() default false;// 小型图标资源,使用频率低String smallIcon() default "";// 大型图标资源,使用频率低String largeIcon() default "";// 指定Servlet的描述信息String description() default "";// 指定Servlet的显示名String displayName() default "";
}

HttpServletRequest获取查询参数的方法

方法名返回值类型适用场景
getParameter(String)String获取单值参数
getParameterValues(String)String[]获取多值参数
getParameterMap()Map<String, String[]>获取所有参数
getParameterNames()Enumeration<String>获取所有参数名
getQueryString()String获取 URL 查询字符串
getInputStream()ServletInputStream获取请求体的二进制数据
getReader()BufferedReader获取请求体的文本数据
getParts()Collection<Part>获取文件上传的所有部分
getPart(String)Part获取文件上传的指定部分

 HttpServletRequest获取请求体的方法

方法名返回值使用场景(请求体类型)
getParameter(String name)String适用于请求体为 application/x-www-form-urlencoded 格式的表单数据,用于获取单个参数的值。例如 HTML 表单提交数据时,通过该方法根据参数名获取对应的值。
getParameterValues(String name)String[]同样用于 application/x-www-form-urlencoded 格式的表单数据,当一个参数名对应多个值(如复选框)时,使用此方法获取该参数的所有值。
getParameterMap()Map<String, String[]>用于 application/x-www-form-urlencoded 格式的表单数据,获取请求中所有参数名和对应值数组的映射,可遍历该映射获取所有参数信息。
getInputStream()ServletInputStream<ul><li>请求体为二进制数据,如 application/octet-stream 格式,用于文件上传、发送二进制文件等场景。</li><li>请求体为自定义二进制协议数据,可通过输入流读取原始字节数据进行解析。</li><li>请求体为 application/jsonapplication/xml 等格式,但希望以字节流形式处理数据时也可使用。</li></ul>
getReader()BufferedReader适用于请求体为文本格式的场景,如 application/jsonapplication/xmltext/plain 等,可方便地逐行读取文本数据进行解析。

HttpServletResponse常用响应报头及其设置方法

响应报头名设置方法说明枚举值
Content-TypesetContentType(String type)指定响应内容的 MIME 类型,告诉客户端如何解析响应数据。例如,设置为 text/html 表示响应内容是 HTML 格式,application/json 表示是 JSON 格式。常见的 MIME 类型,如 text/plainimage/jpegapplication/pdf 等
Content-LengthsetContentLength(int len)
setContentLengthLong(long len)
指定响应内容的长度(字节数)。客户端可以根据这个长度来判断数据是否接收完整。setContentLength 用于设置 int 类型的长度,setContentLengthLong 用于设置 long 类型的长度,适用于大文件传输等场景。
Content-DispositionsetHeader("Content-Disposition", String disposition)用于指示如何处理响应内容,通常用于文件下载。可以设置为 attachment; filename="example.pdf" 表示提示客户端下载文件,并指定文件名。<ul><li>inline:表示在浏览器中直接显示内容。</li><li>attachment:表示提示客户端下载内容。</li></ul>
Cache-ControlsetHeader("Cache-Control", String cacheControl)控制缓存策略,指示客户端和中间缓存如何缓存响应。可以设置多个指令,用逗号分隔。<ul><li>no-cache:不使用缓存,每次请求都要重新验证。</li><li>no-store:不允许缓存响应。</li><li>max-age=3600:缓存的最长时间(秒)。</li></ul>
ExpiressetDateHeader("Expires", long date)指定响应的过期时间,是一个绝对时间(从 1970 年 1 月 1 日开始的毫秒数)。如果当前时间超过该时间,客户端会重新请求数据。
ETagsetHeader("ETag", String etag)实体标签,用于标识资源的版本。客户端可以在后续请求中通过 If-None-Match 请求头携带该标签,服务器根据标签判断资源是否有更新。
LocationsetHeader("Location", String location)通常用于重定向,指定重定向的目标 URL。当状态码为 3xx 时,客户端会根据该头信息跳转到指定的 URL。
Set-CookieaddCookie(Cookie cookie)用于在客户端设置 cookie。Cookie 对象包含名称、值、路径、过期时间等信息。
Access-Control-Allow-OriginsetHeader("Access-Control-Allow-Origin", String origin)用于跨域资源共享(CORS),指定允许访问该资源的源。可以设置为具体的域名,也可以设置为 * 表示允许所有源访问。具体的域名或 *
Access-Control-Allow-MethodssetHeader("Access-Control-Allow-Methods", String methods)在 CORS 中,指定允许的 HTTP 请求方法,多个方法用逗号分隔。如 GETPOSTPUTDELETE 等
Access-Control-Allow-HeaderssetHeader("Access-Control-Allow-Headers", String headers)在 CORS 中,指定允许的请求头,多个头用逗号分隔。如 Content-TypeAuthorization 等

HttpServletResponse响应

类别方法签名方法说明
响应状态码void setStatus(int sc)设置 HTTP 响应状态码,可设置任意合法的 HTTP 状态码,适用于设置成功状态码或自定义状态码场景
void sendError(int sc)发送错误状态码,并提供默认错误页面给客户端,用于向客户端反馈错误情况
void sendError(int sc, String msg)发送错误状态码,同时可以自定义错误消息显示在错误页面中
void sendRedirect(String location)发送 302 重定向状态码,将客户端重定向到指定的 URL
响应头设置void setHeader(String name, String value)设置响应头,若响应头已存在则覆盖原有的值
void addHeader(String name, String value)添加响应头,允许同一个响应头有多个值
void setIntHeader(String name, int value)设置整数值的响应头,常用于设置如 Content-Length 等需要整数的头信息
void addIntHeader(String name, int value)添加整数值的响应头,可添加多个相同名称的整数头
void setDateHeader(String name, long date)设置日期值的响应头,日期以从 1970 年 1 月 1 日开始的毫秒数表示,如设置 Expires 头
void addDateHeader(String name, long date)添加日期值的响应头,可添加多个相同名称的日期头
void setContentType(String type)设置响应内容的 MIME 类型,告知客户端如何解析响应数据
void setCharacterEncoding(String charset)设置响应的字符编码,防止中文等字符显示乱码
void setContentLength(int len)设置响应内容的长度(字节数),适用于小文件或内容长度在 int 范围内的情况
void setContentLengthLong(long len)设置响应内容的长度(字节数),支持更大的文件或内容长度
响应体输出PrintWriter getWriter() throws IOException获取一个 PrintWriter 对象,用于输出字符数据,适合输出文本格式内容,如 HTML、JSON 等
ServletOutputStream getOutputStream() throws IOException获取一个 ServletOutputStream 对象,用于输出二进制数据,如图片、文件等
Cookie 设置void addCookie(Cookie cookie)向响应中添加一个 Cookie 对象,用于在客户端存储信息

@WebFilter注解:声明一个类为拦截器(过滤器)

@Target({ElementType.TYPE})  // 指定注解的目标是类型(类、接口或枚举)
@Retention(RetentionPolicy.RUNTIME)  // 注解在运行时可用
@Documented  // 将此注解包含在Javadoc文档中
public @interface WebFilter {// 用于描述过滤器的简短文本说明String description() default "";// 过滤器的显示名称String displayName() default "";// 初始化参数,定义过滤器的初始化设置WebInitParam[] initParams() default {};// 过滤器的名称,用于标识过滤器String filterName() default "";// 过滤器的小图标(UI中的小图标)String smallIcon() default "";// 过滤器的大图标(UI中的大图标)String largeIcon() default "";// 过滤器适用的Servlet名称,可以限制哪些Servlet使用此过滤器String[] servletNames() default {};// 过滤器适用的URL模式,可以用于匹配特定URLString[] value() default {};// 过滤器适用的URL模式,可以用于匹配特定URL的替代方式String[] urlPatterns() default {};// 过滤器的派发类型,指定过滤器应用的请求类型,默认为DispatcherType.REQUESTDispatcherType[] dispatcherTypes() default {DispatcherType.REQUEST};// 是否支持异步请求,默认为不支持boolean asyncSupported() default false;
}

常见的状态码及含义

状态码含义
200成功,表示请求已成功处理
201已创建,表示请求已成功并创建了新资源
204无内容,表示请求已成功但无返回内容
301永久重定向,表示请求的资源已被永久移动到新位置
302临时重定向,表示请求的资源暂时移动到新位置
304未修改,表示资源未被修改,可以使用缓存的版本
400错误的请求,表示请求无效,服务器无法理解
401未授权,表示请求未经授权,用户需要登录
403禁止,表示服务器理解请求但拒绝执行
404未找到,表示请求的资源不存在
405方法不被允许,表示请求方法不被允许
408请求超时,表示请求超出了服务器的处理时间
500服务器内部错误,表示服务器遇到意外错误,无法完成请求
501尚未实施,表示服务器不支持请求的方法
502错误网关,表示作为网关或代理的服务器收到无效响应
503服务不可用,表示服务器当前无法处理请求
504网关超时,表示作为网关或代理的服务器未能及时从上游服务器获得响应

笔记还在更新。。。

相关文章:

jakarta EE学习笔记-个人笔记

WebServlet注解&#xff1a;声明一个类为Servlet Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface WebServlet {// 指定Servlet的影子String name() default ""; // 匹配地址映射(URL)String[] value() default {};// …...

vue3-响应式 toRefs

在Vue 3中&#xff0c;toRefs是一个非常有用的组合式API&#xff08;Composition API&#xff09;函数&#xff0c;它主要用于将响应式对象&#xff08;通常是由reactive创建的对象&#xff09;转换为单独的响应式引用对象。这样做的好处是可以将这些响应式引用解构出来&#x…...

学习threejs,使用Lensflare模拟镜头眩光

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.Lensflare 二、&…...

redis高级数据结构布隆过滤器

文章目录 背景什么是布隆过滤器Redis 中的布隆过滤器布隆过滤器使用注意事项实现原理空间占用估计 背景 我们在使用新闻客户端看新闻时&#xff0c;它会给我们不停地推荐新的内容&#xff0c;它每次推荐时要去重&#xff0c;去掉那些已经看过的内容。问题来了&#xff0c;新闻…...

mysql 5.7安装

基础环境&#xff1a;centos7.9 创建日志存放目录 mkdir -p /opt/supervisor/log安装相关工具 yum install -y perl net-tools numactl gcc python-devel配置yum源 sudo vim /etc/yum.repos.d/mysql-community.repo [mysql-connectors-community] nameMySQL Connectors Com…...

Golang:精通sync/atomic 包的Atomic 操作

在本指南中&#xff0c;我们将探索sync/atomic包的细节&#xff0c;展示如何编写更安全、更高效的并发代码。无论你是经验丰富的Gopher还是刚刚起步&#xff0c;你都会发现有价值的见解来提升Go编程技能。让我们一起开启原子运算的力量吧&#xff01; 理解Go中的原子操作 在快…...

微信小程序如何使用decimal计算金额

第三方库地址&#xff1a;GitHub - MikeMcl/decimal.js: An arbitrary-precision Decimal type for JavaScript 之前都是api接口走后端计算&#xff0c;偶尔发现这个库也不错&#xff0c;计算简单&#xff0c;目前发现比较准确 上代码 导入js import Decimal from ../../uti…...

最新Modular公司之MAX和Mojo作者 克里斯·拉特纳简介

Chris Lattner&#xff08;克里斯拉特纳&#xff09; 是一位著名的计算机科学家和软件工程师&#xff0c;以其在编程语言、编译器技术和软件开发工具领域的贡献而闻名。以下是关于他的详细介绍&#xff1a; 1. 主要成就 &#xff08;1&#xff09;LLVM 项目的创始人 Chris La…...

Redis数据库篇 -- Pipeline

一. 什么是Pipeline 在传统的请求-响应模式中&#xff0c;客户端与服务器之间的通信流程如下&#xff1a; 客户端发送一个命令到服务器。服务器接收命令并执行。服务器将执行结果返回给客户端。客户端接收结果后&#xff0c;发送下一个命令 在这种传统的模式下&#xff0c;…...

爬虫自动化(DrissionPage)

目录 ?一.介绍: 下载DrissionPage,还是我们熟悉的pip&#xff1a; 环境准备&#xff1a; ?二.基本代码&#xff1a; 它对于的导包和类使用&#xff1a; 窗口的设置&#xff1a; 和获取的页面的滑动&#xff1a; 3.进一步认识DrissionPage&#xff1a; 浏览器可以多开…...

常见string库中的函数(C语言超详细)

文章目录 strcspnstrcpystrncpystrcatstrncatstrcmpstrncmpstrchrstrrchrstrstrstrtokstrlenstrnlen strcspn 原型: size_t strcspn(const char *str1, const char *str2);功能&#xff1a; strcspn 会扫描 str1&#xff0c;并返回一个整数&#xff0c;表示 str1 中第一个匹配…...

单例模式几种实现

静态内部类holder实现&#xff08;推荐&#xff09; public class UniqueIdGenerator {public static final UniqueIdGenerator INSTANCE Holder.INSTANCE;// Private holder class for lazy initializationprivate static class Holder {static final UniqueIdGenerator INS…...

android中关于CheckBox自定义选中图片选中无效问题

在android xml 布局中&#xff0c;使用CheckBox控件设置选中背景图代码如下 <CheckBoxandroid:layout_width"wrap_content"android:layout_height"wrap_content"android:button"drawable/dfrd_common_selecotr_check"android:paddingStart&q…...

虚拟局域网之详解(Detailed Explanation of Virtual Local Area Network)

虚拟局域网之详解 VLAN (virtual localArea network)是一种虚拟局域网技术&#xff0c;它可以将一个物理局域网划分为多个逻辑上的虚拟局域网。 基于交换式以太网的虚拟局域网在交换式以太网中&#xff0c;利用VLAN技术&#xff0c;可以将由交换机连接成的物理网络划分成多个…...

双亲委派(JVM)

1.双亲委派 在 Java 中&#xff0c;双薪委派通常是指双亲委派模型&#xff0c;它是 Java 类加载器的一种工作模式&#xff0c;用于确保类加载的安全性和一致性。以下是其相关介绍&#xff1a; 定义与作用 定义&#xff1a;双亲委派模型要求除了顶层的启动类加载器外&#xf…...

第二十一章:考研的艰难抉择与放弃入学的转折

深秋时节&#xff0c;校园宛如被大自然精心雕琢的艺术殿堂。金黄的银杏叶在阳光的轻抚下&#xff0c;闪烁着细碎的光芒&#xff0c;微风拂过&#xff0c;叶片相互摩挲&#xff0c;发出沙沙的轻响&#xff0c;仿佛在低声诉说着岁月的故事。一片片银杏叶悠悠然飘落&#xff0c;宛…...

webpack配置之---output.chunkLoading

output.chunkLoading webpack.output.chunkLoading 配置项用于指定 Webpack 如何加载异步 chunk&#xff08;即按需加载的代码块&#xff09;。在现代 Webpack 版本中&#xff0c;异步代码分割成为了非常常见的功能&#xff0c;chunkLoading 配置项就用于控制 Webpack 加载这些…...

升级RAG应用程序与Redis向量库

Redis Vector Library (RedisVL) 简化AI应用开发 几个月前&#xff0c;Redis推出了Redis向量库&#xff08;RedisVL&#xff09;&#xff0c;以简化人工智能&#xff08;AI&#xff09;应用的开发。自那时起&#xff0c;我们引入了强大的新功能&#xff0c;支持大规模的语言模…...

【starrocks学习】之将starrocks表同步到hive

目录 方法 1&#xff1a;通过HDFS导出数据 1. 将StarRocks表数据导出到HDFS 2. 在Hive中创建外部表 3. 验证数据 方法 2&#xff1a;使用Apache Spark同步 1. 添加StarRocks和Hive的依赖 2. 使用Spark读取StarRocks数据并写入Hive 3. 验证数据 方法 3&#xff1a;通过…...

HTML应用指南:利用GET请求获取全国盒马门店位置信息

随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应用,我们使用Python的requests库通过GET请求,从盒马…...

openEuler部署 sysstat工具

查看环境 [rootlocalhost lxm]# cat /etc/os-release NAME"openEuler" VERSION"23.09" ID"openEuler" VERSION_ID"23.09" PRETTY_NAME"openEuler 23.09" ANSI_COLOR"0;31"查看 yum 源 [rootlocalhost lxm]# he…...

使用 Three.js 实现炫酷的除夕烟花特效

1&#xff0c;前言 在除夕夜&#xff0c;璀璨的烟花点亮夜空&#xff0c;为节日增添了浓厚的喜庆氛围。在 Web 端&#xff0c;我们可以使用 Three.js 来模拟这种美轮美奂的烟花特效&#xff0c;让网页也能展现绚丽的节日气息。本文将介绍如何利用 Three.js 及其着色器技术&…...

LMM-3DP:集成 LMM 规划器和 3D 技能策略实现可泛化操作

25年1月来自UCSD的论文“Integrating LMM Planners and 3D Skill Policies for Generalizable Manipulation”。 大型多模态模型 (LMM) 的视觉推理能力和 3D 特征场语义丰富性的最新进展&#xff0c;拓展了机器人能力的范围。这些发展对于弥合 LMM 高级推理与利用 3D 特征场低…...

Linux——基础命令3

1、关机重启命令 reboot指令 作用&#xff1a;重启计算机 语法&#xff1a;reboot shutdown指令 作用&#xff1a;关机 语法&#xff1a;shutdown -h 时间 时间常见的值&#xff1a; now &#xff08;立即关机&#xff09; m&#xff08;m表示minutes数字&#xff09;eg&…...

ChatGPT提问技巧:行业热门应用提示词案例-文案写作

ChatGPT 作为强大的 AI 语言模型&#xff0c;已经成为文案写作的得力助手。但要让它写出真正符合你需求的文案&#xff0c;关键在于如何与它“沟通”&#xff0c;也就是如何设计提示词&#xff08;Prompt&#xff09;。以下是一些实用的提示词案例&#xff0c;帮助你解锁 ChatG…...

python - 封装moondream(备份)

目录 一、 moondream封装成类 二、moondream封装成http api 一、 moondream封装成类 # moondream_model.py #https://github.com/vikhyat/moondream?tab=readme-ov-fileimport moondream as md from PIL import Imageclass MoondreamModel:def __init__(self, model_path):…...

响应式编程库(三) -r2dbc

r2dbc整合 什么是r2dbc版本选择简单试用整合springbootDatabaseClient 进行查询使用Repository接口(对应mapper)实体类复杂查询&#xff08;一对一&#xff09;实体类转换器测试代码一对多关系 什么是r2dbc 反应式关系数据库连接&#xff08;R2DBC&#xff09;项目为关系数据库…...

嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?

2025年&#xff0c;全球AI领域最震撼的突破并非来自算力堆叠的超级模型&#xff0c;而是中国团队DeepSeek通过开源策略&#xff0c;推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言&#xff0c;被称作“核弹级别”的操…...

基于遗传算法的64QAM星座图的最优概率整形matlab仿真,对比优化前后整形星座图和误码率

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; GA优化过程&#xff1a; 优化前后星座图对比&#xff1a; &#xff08;优化后…...

从零开始玩转Docker:轻松开启容器化之旅

一、什么是 Docker Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。简单来说&#xff0c;Docker 就像是一个超级 “快递箱”&#xff0c…...