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