欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 【Easylive】HttpServletRequest、HttpServletResponse、HttpSession 介绍

【Easylive】HttpServletRequest、HttpServletResponse、HttpSession 介绍

2025/4/4 14:35:29 来源:https://blog.csdn.net/m0_47352999/article/details/146883992  浏览:    关键词:【Easylive】HttpServletRequest、HttpServletResponse、HttpSession 介绍

【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版
这三个是 Java Web 开发(Servlet/JSP)的核心接口,用于处理 HTTP 请求和响应 以及 用户会话管理。它们在 Spring MVC(@Controller)中也被广泛使用。


1. HttpServletRequest(请求对象)

作用

封装客户端(浏览器)发送的 HTTP 请求信息,包括:
• 请求参数(GET/POST)
• 请求头(Headers)
• 会话(Session)
• 客户端信息(IP、User-Agent)

常用方法

方法说明
String getParameter("name")获取请求参数(如 ?id=123 或表单 POST 数据)
String[] getParameterValues("name")获取复选框等同名参数(返回数组)
String getHeader("User-Agent")获取请求头信息
String getMethod()获取请求方法(GET/POST/PUT/DELETE)
String getRequestURI()获取请求路径(如 /user/login
Cookie[] getCookies()获取客户端发送的 Cookie
HttpSession getSession()获取或创建会话(Session)
String getRemoteAddr()获取客户端 IP 地址

代码示例

@GetMapping("/user")
public String getUser(HttpServletRequest request) {String username = request.getParameter("username"); // 获取参数String ip = request.getRemoteAddr(); // 获取客户端IPreturn "User: " + username + ", IP: " + ip;
}

2. HttpServletResponse(响应对象)

作用

封装服务器返回给客户端的 HTTP 响应信息,包括:
• 设置响应状态码(200/404/500)
• 添加响应头(Headers)
• 写入响应体(HTML/JSON)
• 重定向或转发

常用方法

方法说明
void setStatus(200)设置 HTTP 状态码(如 404、500)
void setContentType("text/html")设置响应内容类型(如 application/json
PrintWriter getWriter()获取输出流,向客户端发送文本(HTML/JSON)
void sendRedirect("/new-url")重定向到新地址(302 跳转)
void addCookie(Cookie cookie)向客户端添加 Cookie
void setHeader("Cache-Control", "no-cache")设置响应头

代码示例

@GetMapping("/hello")
public void sayHello(HttpServletResponse response) throws IOException {response.setContentType("text/html");response.getWriter().write("<h1>Hello World!</h1>");
}@GetMapping("/redirect")
public void redirect(HttpServletResponse response) throws IOException {response.sendRedirect("https://example.com"); // 重定向
}

3. HttpSession(会话对象)

作用

用于在 多次 HTTP 请求间存储用户数据(如登录状态、购物车信息)。
基于 Cookie(JSESSIONID)URL 重写 实现会话跟踪。

常用方法

方法说明
void setAttribute("key", value)存储会话数据
Object getAttribute("key")获取会话数据
void removeAttribute("key")删除会话数据
void invalidate()销毁当前会话(用户注销)
String getId()获取会话 ID
long getCreationTime()获取会话创建时间

代码示例

// 登录时存储用户信息
@PostMapping("/login")
public String login(HttpServletRequest request, @RequestParam String username) {HttpSession session = request.getSession(); // 获取或创建Sessionsession.setAttribute("user", username); // 存储用户信息return "Login success!";
}// 获取会话数据
@GetMapping("/profile")
public String profile(HttpSession session) {String user = (String) session.getAttribute("user"); // 获取用户信息return "Current user: " + user;
}// 注销
@GetMapping("/logout")
public String logout(HttpSession session) {session.invalidate(); // 销毁会话return "Logged out!";
}

4. 三者的关系

  1. 请求流程
    • 浏览器发送请求 → HttpServletRequest 接收数据。
    • 服务器处理请求 → 使用 HttpSession 存储用户状态。
    • 服务器返回响应 → HttpServletResponse 输出结果。

  2. 典型场景
    登录认证:通过 Session 保存用户登录状态。
    表单提交:通过 Request 获取参数,通过 Response 返回结果。
    权限控制:检查 Session 中是否存在用户信息。


5. 在 Spring MVC 中的简化用法

Spring 提供了更简洁的替代方式(底层仍依赖这三个对象):

(1) 直接注入

@GetMapping("/example")
public String example(@RequestParam String param,   // 替代 request.getParameter()@CookieValue String cookie,   // 替代 request.getCookies()HttpSession session           // 直接注入 Session
) {session.setAttribute("key", "value");return "OK";
}

(2) 使用 @ModelAttribute 绑定对象

@PostMapping("/user")
public String addUser(@ModelAttribute User user) {// 自动将请求参数绑定到 User 对象return "Saved: " + user.getName();
}

6. 总结

对象作用典型用途
HttpServletRequest封装客户端请求获取参数、请求头、客户端信息
HttpServletResponse封装服务器响应设置状态码、返回数据、重定向
HttpSession跨请求存储用户数据登录状态、购物车、用户偏好

掌握这三个对象是 Java Web 开发的基础,无论是传统 Servlet 还是 Spring MVC 都离不开它们! 🚀

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词