请求 HttpServletRequest

未匹配的标注

以下为 javax.servlet.http.HttpServletRequest 接口的方法大全及作用详解,按功能分类整理:


1. 基础请求信息

方法 作用
String getMethod() 获取 HTTP 请求方法(如 GETPOST
String getProtocol() 获取协议及版本(如 HTTP/1.1
String getScheme() 获取 URL 协议(如 httphttps
int getContentLength() 获取请求体字节长度(-1 表示未知)
String getContentType() 获取请求体的 MIME 类型(如 application/json

2. URL 和 URI 路径

方法 作用
String getRequestURI() 获取 URI(如 /app/user?id=1
StringBuffer getRequestURL() 获取完整 URL(如 http://example.com/app/user
String getContextPath() 获取应用上下文路径(如 /app
String getServletPath() 获取 Servlet 映射路径(如 /user
String getPathInfo() 获取额外路径信息(如 /details,需 URL 映射配置)

3. 请求头处理

方法 作用
String getHeader(String name) 获取指定请求头的值
Enumeration<String> getHeaders(String name) 获取指定请求头的所有值(如多值 Cookie)
Enumeration<String> getHeaderNames() 获取所有请求头名称的枚举
long getDateHeader(String name) 获取日期类型请求头的毫秒值(如 If-Modified-Since
int getIntHeader(String name) 获取整型请求头的值(如 Content-Length

4. 请求参数处理

方法 作用
String getParameter(String name) 获取单个请求参数值(GETPOST
String[] getParameterValues(String name) 获取多个同名参数值(如复选框数据)
Map<String, String[]> getParameterMap() 获取所有参数的键值对映射
Enumeration<String> getParameterNames() 获取所有参数名称的枚举
String getQueryString() 获取 URL 查询字符串(如 id=1&name=Alice

5. 会话与认证

方法 作用
HttpSession getSession() 获取或创建会话(true 表示自动创建)
HttpSession getSession(boolean create) 根据 create 参数决定是否创建新会话
String getRemoteUser() 获取已认证用户的用户名
Principal getUserPrincipal() 获取用户主体对象(如 UserPrincipal
boolean isUserInRole(String role) 检查用户是否属于指定角色

6. 客户端信息

方法 作用
String getRemoteAddr() 获取客户端 IP 地址
String getRemoteHost() 获取客户端主机名(可能为 IP)
int getRemotePort() 获取客户端端口号
String getLocalAddr() 获取服务器接收请求的 IP 地址
int getLocalPort() 获取服务器接收请求的端口号

7. 请求体与流操作

方法 作用
ServletInputStream getInputStream() 获取二进制请求体输入流
BufferedReader getReader() 获取字符流形式的请求体
void setCharacterEncoding(String encoding) 设置请求体字符编码(需在读取前调用)

8. 属性操作

方法 作用
void setAttribute(String name, Object value) 在请求范围内设置属性
Object getAttribute(String name) 获取请求范围内的属性值
void removeAttribute(String name) 移除请求范围内的属性
Enumeration<String> getAttributeNames() 获取所有请求属性名称的枚举

9. 异步处理 (Servlet 3.0+)

方法 作用
AsyncContext startAsync() 开启异步请求处理
AsyncContext startAsync(ServletRequest req, ServletResponse res) 指定请求和响应开启异步处理
boolean isAsyncStarted() 检查是否处于异步模式

10. 安全相关

方法 作用
String getAuthType() 获取认证类型(如 BASICFORM
boolean isSecure() 检查请求是否通过 HTTPS 发送
String getServerName() 获取服务器主机名(如 example.com

使用示例

// 获取请求参数
String username = request.getParameter("username");

// 获取请求头
String userAgent = request.getHeader("User-Agent");

// 获取会话并存储数据
HttpSession session = request.getSession();
session.setAttribute("loginUser", username);

// 检查用户角色
if (request.isUserInRole("admin")) {
    // 执行管理员操作
}

注意事项

  1. 编码问题:
    处理 POST 表单时,需先调用 request.setCharacterEncoding("UTF-8") 避免中文乱码。

  2. 参数与属性区别:
    getParameter() 获取客户端提交的数据,getAttribute() 获取服务器设置的请求属性。

  3. 线程安全:
    HttpServletRequest 对象仅在当前请求线程内有效,不可跨线程共享。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
唐章明
讨论数量: 0
发起讨论 查看所有版本


暂无话题~