HttpServletRequest简介说明

欢喜 Servlet 发布时间:2025-05-27 10:20:47 阅读数:91 1
下文笔者讲述HttpServletRequest简介说明,如下所示

HttpServletRequest简介

`HttpServletRequest`是Java Servlet API中的一个接口,
   是`ServletRequest`子接口
     专门用于处理HTTP请求
	  它封装客户端(如浏览器)发送到服务器所有HTTP请求信息
	    包括请求头、请求参数、会话信息等

HttpServletRequest功能

功能 描述
获取请求参数 如 GET/POST 参数、路径参数等
获取请求头信息 如 User-Agent、Accept-Language、Authorization 等
获取会话对象 通过 `getSession()` 获取或创建 `HttpSession`
获取客户端信息 如 IP 地址、请求方法、协议版本等
获取输入流 读取原始请求体内容(如 JSON、XML、文件上传)

HttpServletRequest接口继承关系

public interface HttpServletRequest extends ServletRequest {
    // HTTP 特有方法定义
}
 
开发者在编写 Servlet 时
  通常会使用这个接口来处理 HTTP 请求。

常用方法

获取请求参数

方法名 描述
`getParameter(String name)` 获取指定名称的请求参数值(GET 或 POST)
`getParameterValues(String name)` 获取多个值的参数(如复选框)
`getParameterMap()` 返回所有参数的 Map 形式:`Map<String, String[]>`
例:
String username = request.getParameter("username");
String[] hobbies = request.getParameterValues("hobby");

获取请求信息

方法名 描述
`getMethod()` 获取请求方法(GET / POST / PUT / DELETE 等)
`getRequestURI()` 获取请求的 URI(不包含协议和域名)
`getQueryString()` 获取查询字符串(URL 中 ? 后面的部分)
`getRemoteAddr()` 获取客户端 IP 地址
`getProtocol()` 获取协议版本(如 HTTP/1.1)
获取请求头信息
方法名 描述
`getHeader(String name)` 获取指定名称的请求头
`getHeaders(String name)` 获取多个值的请求头(如 Accept)
`getHeaderNames()` 获取所有请求头名称的枚举
例:
String userAgent = request.getHeader("User-Agent");
Enumeration<String> acceptHeaders = request.getHeaders("Accept");
获取会话信息
方法名 描述
`getSession()` 获取当前请求的会话对象(HttpSession)
`getSession(boolean create)` 如果为 true,则在不存在时创建新会话
`isRequestedSessionIdValid()` 判断当前 Session ID 是否有效
例:
HttpSession session = request.getSession();
session.setAttribute("user", user);

获取请求体内容(适用于 POST/PUT)

方法名 描述
`getInputStream()` 获取原始请求体的字节流(适合二进制数据)
`getReader()` 获取字符流,适合读取文本内容(如 JSON、XML)
例(读取 JSON 请求体):
BufferedReader reader = request.getReader();
StringBuilder json = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
    json.append(line);
}
System.out.println(json.toString());
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request,
       	HttpServletResponse response)
            throws IOException {

        // 获取用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 获取客户端 IP
        String clientIP = request.getRemoteAddr();

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

        // 创建会话并保存用户信息
        HttpSession session = request.getSession();
        session.setAttribute("user", new User(username));

        // 返回响应
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<h1>登录成功!欢迎 " + username + "</h1>");
    }
}

注意事项

 请求对象是每个请求独有的 
 不需要担心线程安全问题  
 不同请求方式使用不同方法获取数据
 GET 使用参数,POST 可以使用参数或请求体 
 设置字符编码很重要
   使用 `request.setCharacterEncoding("UTF-8")` 避免乱码 
 慎用`getInputStream()` 和 `getReader()` ,两者不能同时调用,且只能读取一次 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202505/305.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者