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

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...