当前位置: 首页 > 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请求,从盒马…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

Spring Boot + MyBatis 集成支付宝支付流程

Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例&#xff08;电脑网站支付&#xff09; 1. 添加依赖 <!…...

Vue3 PC端 UI组件库我更推荐Naive UI

一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用&#xff0c;前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率&#xff0c;还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库&#xff08;Naive UI、Element …...

boost::filesystem::path文件路径使用详解和示例

boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类&#xff0c;封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解&#xff0c;包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...

边缘计算网关提升水产养殖尾水处理的远程运维效率

一、项目背景 随着水产养殖行业的快速发展&#xff0c;养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下&#xff0c;而且难以实现精准监控和管理。为了提升尾水处理的效果和效率&#xff0c;同时降低人力成本&#xff0c;某大型水产养殖企业决定…...

HTTPS证书一年多少钱?

HTTPS证书作为保障网站数据传输安全的重要工具&#xff0c;成为众多网站运营者的必备选择。然而&#xff0c;面对市场上种类繁多的HTTPS证书&#xff0c;其一年费用究竟是多少&#xff0c;又受哪些因素影响呢&#xff1f; 首先&#xff0c;HTTPS证书通常在PinTrust这样的专业平…...

CTF show 数学不及格

拿到题目先查一下壳&#xff0c;看一下信息 发现是一个ELF文件&#xff0c;64位的 ​ 用IDA Pro 64 打开这个文件 ​ 然后点击F5进行伪代码转换 可以看到有五个if判断&#xff0c;第一个argc ! 5这个判断并没有起太大作用&#xff0c;主要是下面四个if判断 ​ 根据题目…...