HttpServletRequest知识小结
# HttpServletRequest 知识小结
在 Java Web 开发领域,尤其是在 Servlet 技术中,javax.servlet.http.HttpServletRequest
接口扮演着至关重要的角色。作为一个核心接口,它承载了客户端 HTTP 请求的所有详细信息,是服务端与客户端进行通信的桥梁。
本文将对此接口的主要功能和应用场景进行详细介绍。
# 基本概念
HttpServletRequest
是 Java Servlet 中的一个接口(位于 Java EE 平台的 javax.servlet.http 包下),用于封装客户端请求的信息。
- 它是由 Servlet 容器在接收到 HTTP 请求时创建的对象,
- 它封装了 HTTP 请求的所有元数据,包括
请求方法、URL、请求头、参数、cookies、请求体
等。 - 该接口位于 Java EE 平台的 javax.servlet.http 包下,是 HTTP 协议与 Servlet 程序之间的重要纽带。
以下是关于 HttpServletRequest
的一些重要知识点:
# 内部方法
# 1、获取请求参数
String getParameter(String name)
: 获取单个请求参数的值。String[] getParameterValues(String name)
: 获取具有相同名称的所有请求参数的值。
String paramName = request.getParameter("name");
String[] paramValues = request.getParameterValues("multipleValues");
1
2
2
# 2、获取请求头信息
String getHeader(String name)
: 获取指定名称的请求头的值。Enumeration<String> getHeaderNames()
: 获取所有请求头的名称。
String userAgent = request.getHeader("User-Agent");
Enumeration<String> headerNames = request.getHeaderNames();
1
2
2
# 3、获取请求的方法、URI等信息:
String getMethod()
: 获取请求的 HTTP 方法(GET、POST 等)。String getRequestURI()
: 获取请求的 URI。
String httpMethod = request.getMethod();
String requestURI = request.getRequestURI();
1
2
2
# 4、获取客户端信息:
String getRemoteAddr()
: 获取客户端的 IP 地址。
String clientIP = request.getRemoteAddr();
1
# 5、获取 Session 和 Cookie:
HttpSession getSession()
: 获取请求关联的会话对象。Cookie[] getCookies()
: 获取请求中的所有 Cookie。
HttpSession session = request.getSession();
Cookie[] cookies = request.getCookies();
1
2
2
# 6、获取请求参数的 Map 形式
Map<String, String[]> getParameterMap()
: 获取所有请求参数的 Map 形式。
Map<String, String[]> paramMap = request.getParameterMap();
1
# 7、获取请求体信息
ServletInputStream getInputStream()
: 获取请求的输入流。
ServletInputStream inputStream = request.getInputStream();
1
# 8、处理文件上传
Part getPart(String name)
: 获取指定名称的请求部分,用于处理文件上传。
Part filePart = request.getPart("file");
1
# 9、重定向和请求转发
void sendRedirect(String location)
: 重定向到指定的位置。RequestDispatcher getRequestDispatcher(String path)
: 获取请求调度程序,用于请求转发。
response.sendRedirect("/newPage.jsp");
// 或者使用请求转发
RequestDispatcher dispatcher = request.getRequestDispatcher("/newPage.jsp");
dispatcher.forward(request, response);
1
2
3
4
5
2
3
4
5
# 获取方式
# 途径一:直接注入
@Resource
private HttpServletRequest request;
//@Autowired
@Resource
private HttpServletResponse response;
1
2
3
4
5
6
2
3
4
5
6
# 途径二:controller 层中直接用
@GetMapping(value = "/abc/")
public String doSomething(HttpServletRequest request,HttpServletResponse response) {
//...
}
1
2
3
4
2
3
4
# 途径三:从 RequestContextHolder 中获取
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
HttpServletResponse response = servletRequestAttributes.getResponse();
1
2
3
2
3
# 学习参考
HttpServletRequest和HttpServletResponse的获取与使用_httpresponsemessage 获取返回内容-CSDN博客 (opens new window)
上次更新: 2024/9/25 11:16:13