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请求,从盒马…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
