jakarta EE学习笔记-个人笔记

news2025/2/9 9:10:11

@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 对象,用于在客户端存储信息

常见的状态码及含义

状态码含义
200成功,表示请求已成功处理
201已创建,表示请求已成功并创建了新资源
204无内容,表示请求已成功但无返回内容
301永久重定向,表示请求的资源已被永久移动到新位置
302临时重定向,表示请求的资源暂时移动到新位置
304未修改,表示资源未被修改,可以使用缓存的版本
400错误的请求,表示请求无效,服务器无法理解
401未授权,表示请求未经授权,用户需要登录
403禁止,表示服务器理解请求但拒绝执行
404未找到,表示请求的资源不存在
405方法不被允许,表示请求方法不被允许
408请求超时,表示请求超出了服务器的处理时间
500服务器内部错误,表示服务器遇到意外错误,无法完成请求
501尚未实施,表示服务器不支持请求的方法
502错误网关,表示作为网关或代理的服务器收到无效响应
503服务不可用,表示服务器当前无法处理请求
504网关超时,表示作为网关或代理的服务器未能及时从上游服务器获得响应

笔记还在更新。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2295185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kokoro 开源文本转语音引擎上线!多语言支持,无需联网,浏览器内极速运行

Kokoro 是一款轻量级的开源文本转语音(TTS)引擎,凭借其高效能和轻量化设计,迅速在技术社区中引起关注。本文将详细介绍 Kokoro 的主要特点,并提供在浏览器和 Python 环境中的代码示例,帮助您快速上手。 1. Kokoro:可在浏览器中运行的 TTS 引擎 1.1 简介 Kokoro 是一个…

DeepSeek LLM 论文解读:相信长期主义开源理念可扩展大语言模型(DeepSeek 吹响通用人工智能的号角)

论文链接&#xff1a;DeepSeek LLM: Scaling Open-Source Language Models with Longtermism&#xff08;相信长期主义开源理念可扩展大语言模型&#xff09; 目录 摘要一、数据处理&#xff08;一&#xff09;数据清洗与丰富&#xff08;二&#xff09;分词器与词汇设置 二、模…

fastchat 部署大模型

大模型实战--Llama3.1大模型部署及启动Web UI、OpenAI API实操 - 简书一、背景 随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Language Models, LLMs&#xff09;已成为自然语言处理领域的核心工具。这些模型以其强大的语言理解和生成能力&#xff0c;...ht…

【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统

在当前数字化时代&#xff0c;网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言&#xff0c;确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式&#xff0c;为OpenVPN的二次登录认证提供了理想的解决方案&#xff0c;特别是…

协议-ACLLite-ffmpeg

是什么&#xff1f; FFmpeg是一个开源的多媒体处理工具包&#xff0c;它集成了多种功能&#xff0c;包括音视频的录制、转换和流式传输处理。FFmpeg由一系列的库和工具组成&#xff0c;其中最核心的是libavcodec和libavformat库。 libavcodec是一个领先的音频/视频编解码器库&…

树和二叉树_7

树和二叉树_7 一、leetcode-102二、题解1.引库2.代码 一、leetcode-102 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 样例输入&#xff1a;root [3,9,20,null,nu…

Rocky Linux9安装Zabbix7.0(精简版)

Linux 系统版本 Rocky Linux release 9.3 (Blue Onyx) 注意&#xff1a;zabbix 7以上版本不支持CentOS 7系统&#xff0c;需要CentOS 8以上&#xff0c; 本教程支持CentOS9及Rocky Linux 9 在Rocky Linux release 9.3测试通过 Linux环境准备 关闭防火墙和selinux #关闭防…

网络分析工具—WireShark的安装及使用

Wireshark 是一个广泛使用的网络协议分析工具&#xff0c;常被网络管理员、开发人员和安全专家用来捕获和分析网络数据包。它支持多种网络协议&#xff0c;能够帮助用户深入理解网络流量、诊断网络问题以及进行安全分析。 Wireshark 的主要功能 数据包捕获与分析&#xff1a; …

C++开发(软件开发)常见面试题

目录 1、C里指针和数组的区别 2、C中空指针请使用nullptr不要使用NULL 3、http/https区别和头部结构&#xff1f; 4、有了mac地址为什么还要ip地址&#xff1f;ip地址的作用 5、有了路由器为什么还要交换机&#xff1f; 6、面向对象三大特性 7、友元函数 8、大端小端 …

WEB攻防-文件下载文件读取文件删除目录遍历目录穿越

目录 一、文件下载漏洞 1.1 文件下载案例&#xff08;黑盒角度&#xff09; 1.2 文件读取案例&#xff08;黑盒角度&#xff09; 二、文件删除 三、目录遍历与目录穿越 四、审计分析-文件下载漏洞-XHCMS 五、审计分析-文件读取漏洞-MetInfo-函数搜索 六、审计分析-…

MySQL数据库(七)SQL 优化

一 插入数据 采用方法 1 批量插入 2 手动提交事务 3 主键顺序插入 4* 使用load插入指令数据 二 主键优化 1 数据组织方式 在InnoDB存储引擎中&#xff0c;表中的数据都是根据主键顺序组织存放的&#xff0c;这种存储方式的表称为索引组织表 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…

本地部署DeepSeek(Mac版本,带图形化操作界面)

一、下载安装&#xff1a;Ollama 官网下载&#xff1a;Download Ollama on macOS 二、安装Ollama 1、直接解压zip压缩包&#xff0c;解压出来就是应用程序 2、直接将Ollama拖到应用程序中即可 3、启动终端命令验证 # 输入 ollama 代表已经安装成功。 4、下载模型 点击模型…

Linux LED 实验

一、Linux 下 LED 灯驱动原理 其实跟裸机实验很相似&#xff0c;只不过要编写符合 Linux 的驱动框架。 1. 地址映射 MMU全称 Memory Manage Unit&#xff0c;即内存存储单元。 MMU主要功能为&#xff1a; 1&#xff09;完成虚拟空间到物理空间的映射&#xff1b; 2&#x…

【Redis】redis 存储的列表如何分页和检索

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

2025.2.6 数模AI智能体大更新,更专业的比赛辅导,同提示词效果优于gpt-o1/o3mini、deepseek-r1满血

本次更新重新梳理了回复逻辑规则&#xff0c;无任何工作流&#xff0c;一共3.2k字细节描述。具体效果可以看视频&#xff0c;同时也比对了gpt-o1、gpt-o3mini、deepseek-r1-67BI&#xff0c;从数学建模题目解答上来看&#xff0c;目前我的数模AI智能体具有明显优势。 AI智能体优…

cursor指令工具

Cursor 工具使用指南与实例 工具概览 Cursor 提供了一系列强大的工具来帮助开发者提高工作效率。本指南将通过具体实例来展示这些工具的使用方法。 1. 目录文件操作 1.1 查看目录内容 (list_dir) 使用 list_dir 命令可以查看指定目录下的文件结构: 示例: list_dir log…

【玩转全栈】----Django模板语法、请求与响应

目录 一、引言 二、模板语法 三、传参 1、视图函数到模板文件 2、模板文件到视图函数 四、引入静态文件 五、请求与响应 ?1、请求 2、响应 六、综合小案例 1、源码展示 2、注意事项以及部分解释 3、展示 一、引言 像之前那个页面&#xff0c;太过简陋&#xff0c;而且一个完整…

C++,设计模式,【单例模式】

文章目录 一、模式定义与核心价值二、模式结构解析三、关键实现技术演进1. 基础版(非线程安全)2. 线程安全版(双重检查锁)3. 现代C++实现(C++11起)四、实战案例:全局日志管理器五、模式优缺点深度分析✅ 核心优势⚠️ 潜在缺陷六、典型应用场景七、高级实现技巧1. 模板化…

基于yolov11的阿尔兹海默症严重程度检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv11的阿尔兹海默症严重程度检测系统是一种创新的医疗辅助工具&#xff0c;旨在通过先进的计算机视觉技术提高阿尔兹海默症的早期诊断和病情监测效率。阿尔兹海默症是一种渐进性的神经退行性疾病&#xff0c;通常表现为认知障碍、记忆丧失和语言障碍等症状…