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 获取所有参数
getParameterNames() Enumeration 获取所有参数名
getQueryString() String 获取 URL 查询字符串
getInputStream() ServletInputStream 获取请求体的二进制数据
getReader() BufferedReader 获取请求体的文本数据
getParts() Collection 获取文件上传的所有部分
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 用于 application/x-www-form-urlencoded 格式的表单数据,获取请求中所有参数名和对应值数组的映射,可遍历该映射获取所有参数信息。
getInputStream() ServletInputStream
  • 请求体为二进制数据,如 application/octet-stream 格式,用于文件上传、发送二进制文件等场景。
  • 请求体为自定义二进制协议数据,可通过输入流读取原始字节数据进行解析。
  • 请求体为 application/jsonapplication/xml 等格式,但希望以字节流形式处理数据时也可使用。
getReader() BufferedReader 适用于请求体为文本格式的场景,如 application/jsonapplication/xmltext/plain 等,可方便地逐行读取文本数据进行解析。

HttpServletResponse常用响应报头及其设置方法

响应报头名 设置方法 说明 枚举值
Content-Type setContentType(String type) 指定响应内容的 MIME 类型,告诉客户端如何解析响应数据。例如,设置为 text/html 表示响应内容是 HTML 格式,application/json 表示是 JSON 格式。 常见的 MIME 类型,如 text/plainimage/jpegapplication/pdf 等
Content-Length setContentLength(int len)
setContentLengthLong(long len)
指定响应内容的长度(字节数)。客户端可以根据这个长度来判断数据是否接收完整。setContentLength 用于设置 int 类型的长度,setContentLengthLong 用于设置 long 类型的长度,适用于大文件传输等场景。
Content-Disposition setHeader("Content-Disposition", String disposition) 用于指示如何处理响应内容,通常用于文件下载。可以设置为 attachment; filename="example.pdf" 表示提示客户端下载文件,并指定文件名。
  • inline:表示在浏览器中直接显示内容。
  • attachment:表示提示客户端下载内容。
Cache-Control setHeader("Cache-Control", String cacheControl) 控制缓存策略,指示客户端和中间缓存如何缓存响应。可以设置多个指令,用逗号分隔。
  • no-cache:不使用缓存,每次请求都要重新验证。
  • no-store:不允许缓存响应。
  • max-age=3600:缓存的最长时间(秒)。
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 请求方法,多个方法用逗号分隔。 如 GETPOSTPUTDELETE 等
Access-Control-Allow-Headers setHeader("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 网关超时,表示作为网关或代理的服务器未能及时从上游服务器获得响应

笔记还在更新。。。

你可能感兴趣的:(学习,笔记)