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/json、application/xml 等格式,但希望以字节流形式处理数据时也可使用。</li></ul> |
getReader() | BufferedReader | 适用于请求体为文本格式的场景,如 application/json、application/xml、text/plain 等,可方便地逐行读取文本数据进行解析。 |
HttpServletResponse常用响应报头及其设置方法
| 响应报头名 | 设置方法 | 说明 | 枚举值 |
|---|---|---|---|
Content-Type | setContentType(String type) | 指定响应内容的 MIME 类型,告诉客户端如何解析响应数据。例如,设置为 text/html 表示响应内容是 HTML 格式,application/json 表示是 JSON 格式。 | 常见的 MIME 类型,如 text/plain、image/jpeg、application/pdf 等 |
Content-Length | setContentLength(int len)setContentLengthLong(long len) | 指定响应内容的长度(字节数)。客户端可以根据这个长度来判断数据是否接收完整。setContentLength 用于设置 int 类型的长度,setContentLengthLong 用于设置 long 类型的长度,适用于大文件传输等场景。 | 无 |
Content-Disposition | setHeader("Content-Disposition", String disposition) | 用于指示如何处理响应内容,通常用于文件下载。可以设置为 attachment; filename="example.pdf" 表示提示客户端下载文件,并指定文件名。 | <ul><li>inline:表示在浏览器中直接显示内容。</li><li>attachment:表示提示客户端下载内容。</li></ul> |
Cache-Control | setHeader("Cache-Control", String cacheControl) | 控制缓存策略,指示客户端和中间缓存如何缓存响应。可以设置多个指令,用逗号分隔。 | <ul><li>no-cache:不使用缓存,每次请求都要重新验证。</li><li>no-store:不允许缓存响应。</li><li>max-age=3600:缓存的最长时间(秒)。</li></ul> |
Expires | setDateHeader("Expires", long date) | 指定响应的过期时间,是一个绝对时间(从 1970 年 1 月 1 日开始的毫秒数)。如果当前时间超过该时间,客户端会重新请求数据。 | 无 |
ETag | setHeader("ETag", String etag) | 实体标签,用于标识资源的版本。客户端可以在后续请求中通过 If-None-Match 请求头携带该标签,服务器根据标签判断资源是否有更新。 | 无 |
Location | setHeader("Location", String location) | 通常用于重定向,指定重定向的目标 URL。当状态码为 3xx 时,客户端会根据该头信息跳转到指定的 URL。 | 无 |
Set-Cookie | addCookie(Cookie cookie) | 用于在客户端设置 cookie。Cookie 对象包含名称、值、路径、过期时间等信息。 | 无 |
Access-Control-Allow-Origin | setHeader("Access-Control-Allow-Origin", String origin) | 用于跨域资源共享(CORS),指定允许访问该资源的源。可以设置为具体的域名,也可以设置为 * 表示允许所有源访问。 | 具体的域名或 * |
Access-Control-Allow-Methods | setHeader("Access-Control-Allow-Methods", String methods) | 在 CORS 中,指定允许的 HTTP 请求方法,多个方法用逗号分隔。 | 如 GET、POST、PUT、DELETE 等 |
Access-Control-Allow-Headers | setHeader("Access-Control-Allow-Headers", String headers) | 在 CORS 中,指定允许的请求头,多个头用逗号分隔。 | 如 Content-Type、Authorization 等 |
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 对象,用于在客户端存储信息 |
常见的状态码及含义
| 状态码 | 含义 |
|---|---|
| 200 | 成功,表示请求已成功处理 |
| 201 | 已创建,表示请求已成功并创建了新资源 |
| 204 | 无内容,表示请求已成功但无返回内容 |
| 301 | 永久重定向,表示请求的资源已被永久移动到新位置 |
| 302 | 临时重定向,表示请求的资源暂时移动到新位置 |
| 304 | 未修改,表示资源未被修改,可以使用缓存的版本 |
| 400 | 错误的请求,表示请求无效,服务器无法理解 |
| 401 | 未授权,表示请求未经授权,用户需要登录 |
| 403 | 禁止,表示服务器理解请求但拒绝执行 |
| 404 | 未找到,表示请求的资源不存在 |
| 405 | 方法不被允许,表示请求方法不被允许 |
| 408 | 请求超时,表示请求超出了服务器的处理时间 |
| 500 | 服务器内部错误,表示服务器遇到意外错误,无法完成请求 |
| 501 | 尚未实施,表示服务器不支持请求的方法 |
| 502 | 错误网关,表示作为网关或代理的服务器收到无效响应 |
| 503 | 服务不可用,表示服务器当前无法处理请求 |
| 504 | 网关超时,表示作为网关或代理的服务器未能及时从上游服务器获得响应 |
笔记还在更新。。。
相关文章:
jakarta EE学习笔记-个人笔记
WebServlet注解:声明一个类为Servlet Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface WebServlet {// 指定Servlet的影子String name() default ""; // 匹配地址映射(URL)String[] value() default {};// …...
Kokoro 开源文本转语音引擎上线!多语言支持,无需联网,浏览器内极速运行
Kokoro 是一款轻量级的开源文本转语音(TTS)引擎,凭借其高效能和轻量化设计,迅速在技术社区中引起关注。本文将详细介绍 Kokoro 的主要特点,并提供在浏览器和 Python 环境中的代码示例,帮助您快速上手。 1. Kokoro:可在浏览器中运行的 TTS 引擎 1.1 简介 Kokoro 是一个…...
VSCode使用总结
1、VSCode左边资源窗口字体大小设置 方法一(使用,已成功) 进入安装目录Microsoft VS Code\resources\app\out\vs\workbench(如果是下载的压缩包,解压后resources\app\out\vs\workbench) 打开文件 workbench.desktop.main.css 搜…...
淘宝分类详情数据获取:Python爬虫的高效实现
在电商领域,淘宝作为中国最大的电商平台之一,其分类详情数据对于市场分析、竞争对手研究以及电商运营优化具有不可估量的价值。通过Python爬虫技术,我们可以高效地获取这些数据,为电商从业者提供强大的数据支持。 一、为什么选择…...
DeepSeek LLM 论文解读:相信长期主义开源理念可扩展大语言模型(DeepSeek 吹响通用人工智能的号角)
论文链接:DeepSeek LLM: Scaling Open-Source Language Models with Longtermism(相信长期主义开源理念可扩展大语言模型) 目录 摘要一、数据处理(一)数据清洗与丰富(二)分词器与词汇设置 二、模…...
嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?
2025年,全球AI领域最震撼的突破并非来自算力堆叠的超级模型,而是中国团队DeepSeek通过开源策略,推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言,被称作“核弹级别”的操…...
【EPSG 坐标系系统完全解析(二)(万字详述)】
地理坐标系系统完全解析(万字详述) 第一章 坐标系基础理论(2000字) 1.1 地球空间参照系 1.1.1 地球椭球体模型 参考椭球参数对比: 椭球体长半轴(m)短半轴(m)使用国家/…...
fastchat 部署大模型
大模型实战--Llama3.1大模型部署及启动Web UI、OpenAI API实操 - 简书一、背景 随着人工智能技术的飞速发展,大模型(Large Language Models, LLMs)已成为自然语言处理领域的核心工具。这些模型以其强大的语言理解和生成能力,...ht…...
【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统
在当前数字化时代,网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言,确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式,为OpenVPN的二次登录认证提供了理想的解决方案,特别是…...
协议-ACLLite-ffmpeg
是什么? FFmpeg是一个开源的多媒体处理工具包,它集成了多种功能,包括音视频的录制、转换和流式传输处理。FFmpeg由一系列的库和工具组成,其中最核心的是libavcodec和libavformat库。 libavcodec是一个领先的音频/视频编解码器库&…...
树和二叉树_7
树和二叉树_7 一、leetcode-102二、题解1.引库2.代码 一、leetcode-102 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 样例输入:root [3,9,20,null,nu…...
【C#】一维、二维、三维数组的使用
在C#中,数组是用于存储固定数量相同类型元素的数据结构。根据维度的不同,可以分为一维数组、二维数组(矩阵阵列)、三维数组等。每增加一个维度,数据的组织方式就会变得更加复杂。 一维数组 一维数组是最简单的数组形…...
Dubbo 3.x源码(30)—Dubbo Consumer服务调用源码(2)发起远程调用
基于Dubbo 3.1,详细介绍了Dubbo Consumer服务调用源码。 上文我们学习了,Dubbo 发起服务调用的上半部分源码,我们学习到了FailoverClusterInvoker最终会通过服务提供者Invoker#invoke发起RPC调用,下面我们来学习Dubbo 发起服务调用…...
学习日记-250207
一.论文 1.Prompt Learning for News Recommendation 任务不一致(LLM与实际任务)产生prompt提示。 Prompt Learning for News Recommendation 论文阅读 SIGIR2023-CSDN博客 2.GPT4Rec: A Generative Framework for Personalized Recommendation and…...
Rocky Linux9安装Zabbix7.0(精简版)
Linux 系统版本 Rocky Linux release 9.3 (Blue Onyx) 注意:zabbix 7以上版本不支持CentOS 7系统,需要CentOS 8以上, 本教程支持CentOS9及Rocky Linux 9 在Rocky Linux release 9.3测试通过 Linux环境准备 关闭防火墙和selinux #关闭防…...
网络分析工具—WireShark的安装及使用
Wireshark 是一个广泛使用的网络协议分析工具,常被网络管理员、开发人员和安全专家用来捕获和分析网络数据包。它支持多种网络协议,能够帮助用户深入理解网络流量、诊断网络问题以及进行安全分析。 Wireshark 的主要功能 数据包捕获与分析: …...
C++开发(软件开发)常见面试题
目录 1、C里指针和数组的区别 2、C中空指针请使用nullptr不要使用NULL 3、http/https区别和头部结构? 4、有了mac地址为什么还要ip地址?ip地址的作用 5、有了路由器为什么还要交换机? 6、面向对象三大特性 7、友元函数 8、大端小端 …...
云原生后端|实践?
云原生(Cloud Native)是一种构建和运行应用程序的方法,它充分利用云计算的优势,包括弹性、可扩展性、高可用性和自动化运维。云原生后端开发通常涉及微服务架构、容器化、持续集成/持续部署(CI/CD)、服务网…...
WEB攻防-文件下载文件读取文件删除目录遍历目录穿越
目录 一、文件下载漏洞 1.1 文件下载案例(黑盒角度) 1.2 文件读取案例(黑盒角度) 二、文件删除 三、目录遍历与目录穿越 四、审计分析-文件下载漏洞-XHCMS 五、审计分析-文件读取漏洞-MetInfo-函数搜索 六、审计分析-…...
to_csv保存指定列的方法
df是DataFrame的数据,它的列为[代码, 名称, 最高, 最低] 现在我只想将‘代码’、“名称”两列内容存入csv,实现如下: columns_to_save [代码, 名称] df.代码 df.代码.apply("{}".format)#此行可以防止代码之前的0被忽略掉 d…...
MySQL数据库(七)SQL 优化
一 插入数据 采用方法 1 批量插入 2 手动提交事务 3 主键顺序插入 4* 使用load插入指令数据 二 主键优化 1 数据组织方式 在InnoDB存储引擎中,表中的数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表 2 页分裂 页可以为空也可…...
使用EVE-NG实现单臂路由
一、基础知识 1.三层vlan vlan在三层环境中通常用作网关vlan配上ip网关内部接口ip 2.vlan创建步骤 创建vlan将接口划分到不同的vlan给vlan配置ip地址 二、项目案例 1、项目拓扑 2、项目实现 PC1配置 配置PC1IP地址为192.168.1.10/24网关地址为192.168.1.1 ip 192.168.1…...
flask开发的网站,后端服务关闭后,可以找回之前的数据的吗
如果使用 Flask 开发的网页,后端服务关闭后,是否还能找回数据取决于数据的存储方式: 可能找回数据的情况: 数据库存储(MySQL、PostgreSQL、SQLite 等) 如果 Flask 连接的是持久化数据库,即使后…...
疯狂SQL转换系列- SQL for Milvs2.4
鉴于Milvus仍在不停的迭代新版本,推出新功能,其SDK目前并不稳定。目前其2.4版本的SDK接口已与之前的2.2版本有了较大的差别,功能上也有了一定的调整。为此,我们重新提供了针对[Milvus2.4](https://github.com/colorknight/moql-tr…...
本地部署DeepSeek(Mac版本,带图形化操作界面)
一、下载安装:Ollama 官网下载:Download Ollama on macOS 二、安装Ollama 1、直接解压zip压缩包,解压出来就是应用程序 2、直接将Ollama拖到应用程序中即可 3、启动终端命令验证 # 输入 ollama 代表已经安装成功。 4、下载模型 点击模型…...
Linux LED 实验
一、Linux 下 LED 灯驱动原理 其实跟裸机实验很相似,只不过要编写符合 Linux 的驱动框架。 1. 地址映射 MMU全称 Memory Manage Unit,即内存存储单元。 MMU主要功能为: 1)完成虚拟空间到物理空间的映射; 2&#x…...
深入解析:Jsoup 库的多功能应用场景
Jsoup 是一个强大的 Java 库,主要用于解析和操作 HTML 文档。它不仅广泛应用于网络爬虫和数据抓取,还在网页内容分析、数据清洗与处理、自动化测试等多个领域有着广泛的应用。本文将详细介绍 Jsoup 库的多种用途,并提供具体的代码示例。 一、…...
直接抓取网页的爬虫技术:限制与合规挑战
在利用爬虫技术直接抓取网页内容时,尤其是针对像淘宝这样的大型电商平台,开发者可能会面临诸多技术限制和法律风险。这些限制不仅影响爬虫的效率,还可能引发法律问题。因此,了解这些限制并采取合规措施至关重要。 一、直接抓取网…...
docker常用命令及案例
以下是 Docker 的所有常用命令及其案例说明,按功能分类整理: 1. 镜像管理 1.1 拉取镜像 命令: docker pull <镜像名>:<标签>案例: 拉取官方的 nginx 镜像docker pull nginx:latest1.2 列出本地镜像 命令: docker images案例: 查看本地所有…...
【Redis】redis 存储的列表如何分页和检索
博主介绍:✌全网粉丝22W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
