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 对象,用于在客户端存储信息 |
@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注解:声明一个类为Servlet Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface WebServlet {// 指定Servlet的影子String name() default ""; // 匹配地址映射(URL)String[] value() default {};// …...
vue3-响应式 toRefs
在Vue 3中,toRefs是一个非常有用的组合式API(Composition API)函数,它主要用于将响应式对象(通常是由reactive创建的对象)转换为单独的响应式引用对象。这样做的好处是可以将这些响应式引用解构出来&#x…...

学习threejs,使用Lensflare模拟镜头眩光
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Lensflare 二、&…...

redis高级数据结构布隆过滤器
文章目录 背景什么是布隆过滤器Redis 中的布隆过滤器布隆过滤器使用注意事项实现原理空间占用估计 背景 我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经看过的内容。问题来了,新闻…...
mysql 5.7安装
基础环境: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 操作
在本指南中,我们将探索sync/atomic包的细节,展示如何编写更安全、更高效的并发代码。无论你是经验丰富的Gopher还是刚刚起步,你都会发现有价值的见解来提升Go编程技能。让我们一起开启原子运算的力量吧! 理解Go中的原子操作 在快…...

微信小程序如何使用decimal计算金额
第三方库地址:GitHub - MikeMcl/decimal.js: An arbitrary-precision Decimal type for JavaScript 之前都是api接口走后端计算,偶尔发现这个库也不错,计算简单,目前发现比较准确 上代码 导入js import Decimal from ../../uti…...
最新Modular公司之MAX和Mojo作者 克里斯·拉特纳简介
Chris Lattner(克里斯拉特纳) 是一位著名的计算机科学家和软件工程师,以其在编程语言、编译器技术和软件开发工具领域的贡献而闻名。以下是关于他的详细介绍: 1. 主要成就 (1)LLVM 项目的创始人 Chris La…...

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

爬虫自动化(DrissionPage)
目录 ?一.介绍: 下载DrissionPage,还是我们熟悉的pip: 环境准备: ?二.基本代码: 它对于的导包和类使用: 窗口的设置: 和获取的页面的滑动: 3.进一步认识DrissionPage: 浏览器可以多开…...
常见string库中的函数(C语言超详细)
文章目录 strcspnstrcpystrncpystrcatstrncatstrcmpstrncmpstrchrstrrchrstrstrstrtokstrlenstrnlen strcspn 原型: size_t strcspn(const char *str1, const char *str2);功能: strcspn 会扫描 str1,并返回一个整数,表示 str1 中第一个匹配…...
单例模式几种实现
静态内部类holder实现(推荐) 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 布局中,使用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)是一种虚拟局域网技术,它可以将一个物理局域网划分为多个逻辑上的虚拟局域网。 基于交换式以太网的虚拟局域网在交换式以太网中,利用VLAN技术,可以将由交换机连接成的物理网络划分成多个…...
双亲委派(JVM)
1.双亲委派 在 Java 中,双薪委派通常是指双亲委派模型,它是 Java 类加载器的一种工作模式,用于确保类加载的安全性和一致性。以下是其相关介绍: 定义与作用 定义:双亲委派模型要求除了顶层的启动类加载器外…...
第二十一章:考研的艰难抉择与放弃入学的转折
深秋时节,校园宛如被大自然精心雕琢的艺术殿堂。金黄的银杏叶在阳光的轻抚下,闪烁着细碎的光芒,微风拂过,叶片相互摩挲,发出沙沙的轻响,仿佛在低声诉说着岁月的故事。一片片银杏叶悠悠然飘落,宛…...
webpack配置之---output.chunkLoading
output.chunkLoading webpack.output.chunkLoading 配置项用于指定 Webpack 如何加载异步 chunk(即按需加载的代码块)。在现代 Webpack 版本中,异步代码分割成为了非常常见的功能,chunkLoading 配置项就用于控制 Webpack 加载这些…...
升级RAG应用程序与Redis向量库
Redis Vector Library (RedisVL) 简化AI应用开发 几个月前,Redis推出了Redis向量库(RedisVL),以简化人工智能(AI)应用的开发。自那时起,我们引入了强大的新功能,支持大规模的语言模…...
【starrocks学习】之将starrocks表同步到hive
目录 方法 1:通过HDFS导出数据 1. 将StarRocks表数据导出到HDFS 2. 在Hive中创建外部表 3. 验证数据 方法 2:使用Apache Spark同步 1. 添加StarRocks和Hive的依赖 2. 使用Spark读取StarRocks数据并写入Hive 3. 验证数据 方法 3:通过…...

HTML应用指南:利用GET请求获取全国盒马门店位置信息
随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应用,我们使用Python的requests库通过GET请求,从盒马…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...