主要方法
public String getParameter(String name)
- 获取指定名称的请求参数值。如果请求中没有该参数,则返回
null
。 - 示例:
String userName = request.getParameter("userName");
public String[] getParameterValues(String name)
- 获取指定名称的所有请求参数值(适用于多选或多个同名参数)。如果请求中没有该参数,则返回
null
。 - 示例:
String[] hobbies = request.getParameterValues("hobby");
<form action="displayHobbies.jsp" method="post">
<p><input type="checkbox" name="hobby" value="Reading"> Reading</p>
<p><input type="checkbox" name="hobby" value="Sports"> Sports</p>
<p><input type="checkbox" name="hobby" value="Music"> Music</p>
<p><input type="submit" value="提交"></p>
</form>
<ul>
<%
// 获取所有"hobby"参数的值
String[] hobbies = request.getParameterValues("hobby");
// 检查参数是否存在
if (hobbies != null && hobbies.length > 0) {
for (String hobby : hobbies) {
out.println("<li>" + hobby + "</li>");
}
} else {
out.println("<li>No hobbies selected.</li>");
}
// toString() 方法直接打印数组
out.println("hobbies = " + Arrays.toString(hobbies));
%>
</ul>
public Map<String, String[]> getParameterMap()
- 获取所有请求参数及其值的映射。
- 示例:
Map<String, String[]> params = request.getParameterMap();
public Enumeration<String> getParameterNames()
- 获取所有请求参数的名称。
- 示例:
Enumeration<String> paramNames = request.getParameterNames();
public String getMethod()
- 获取请求的方法(如
GET
或POST
)。 - 示例:
String method = request.getMethod();
public String getHeader(String name)
- 获取指定名称的请求头值。
- 示例:
String userAgent = request.getHeader("User-Agent");
public Enumeration<String> getHeaders(String name)
- 获取指定名称的所有请求头值。
- 示例:
Enumeration<String> headers = request.getHeaders("Accept-Language");
public Cookie[] getCookies()
- 获取所有的Cookies。
- 示例:
Cookie[] cookies = request.getCookies();
public String getRemoteAddr()
- 获取客户端的IP地址。
- 示例:
String clientIP = request.getRemoteAddr();
public String getContextPath()
- 获取应用的上下文路径。
- 示例:
String contextPath = request.getContextPath();
get 与 post 区别
比较项 | get | post |
---|---|---|
缓存 | 可以 | 不可以 |
收藏为书签 | 可以 | 不可以 |
数据长度 | 有限制(URL 的最大长度是 2048 个字符) | 无限制 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
对数据类型的限制 | 只允许 ASCII 字符 | 没有限制。也允许二进制数据 |
安全性 | 不安全 | 安全 |
可见性 | 数据在 URL 中对所有人都是可见的 | 数据不会显示在 URL 中 |
存取属性
getAttribute
和 setAttribute
用于在请求范围内存储和获取对象。这些方法允许在处理请求的过程中将数据保存到请求作用域中,这样在同一请求的不同阶段或者不同的Servlet/JSP之间可以共享数据。
setAttribute(String name, Object o)
- 该方法用来将一个对象与给定的名字关联起来,并将其存储在请求作用域内。如果已经存在同名的对象,则新的对象会覆盖旧的对象。
getAttribute(String name)
- 该方法根据指定的名字从请求作用域中获取对象。如果不存在这样的属性,则返回
null
。
// 错误示范
String mess = request.getAttribute("mess");
mess.length();
// 正确示范
// 2、它的返回值类型是Object类型,需要做数据类型的转换
String mess = (String)request.getAttribute("mess");
// 1、在使用属性值的时候要做非空判断,否则会出现空指针异常
if (mess != null) {
// 在请求中取到"mess"属性对应的属性值,正常使用mess数据
} else {
// 在请求中没有取到"mess"属性对应的属性值,使用备选方案
}
需要注意的是,这些属性只在单个请求生命周期内有效,一旦请求完成,这些属性就会被销毁。如果需要跨多个请求持久化数据,那么应该考虑使用
HttpSession
的setAttribute
和getAttribute
方法。
getAttribute
和 getParameter
的区别
getAttribute
用于获取在服务器端设置的属性值,这些属性可以在请求、会话或应用范围内共享。
方法签名
Object getAttribute(String name);
- 用途:从请求、会话或应用上下文中获取属性值。
- 常见应用场景:在过滤器或拦截器中设置的属性;在一个Servlet中设置并在另一个Servlet中使用的属性;存储用户会话信息。
getParameter
用于获取客户端通过HTTP请求传递的参数值。
方法签名
String getParameter(String name);
String[] getParameterValues(String name);
- 用途:从 HTTP 请求中获取客户端传递的参数值。
-
常见应用场景:表单提交的数据(如文本框、复选框等);URL 中的查询参数(如
?name=value
)。