Servlet-request参数
request参数
javax.servlet.http.HttpServletRequest;
request可以用来获取get/post的参数, 也用来转发和获取Session等
常用方法
返回值 | 方法 | 说明 |
---|---|---|
String |
getParameter(String paramName) |
获取请求参数 |
String[] |
getParameterValues(String paramName) |
获取一组请求参数数据(多选框等一个属性对应多个内容的值) |
Session |
getSession() |
获取Session |
略 | getRequestDispatcher(url地址/转发到资源的地址).forward(req, res); |
转发 |
void |
setAttribute(String key, Object value) |
设置request携带的数据 |
Object |
getAttribute(String key) |
获取request携带的数据 |
String |
getContextPath() |
获取上下文路径 |
Cookie[] |
getCookies() |
获取从浏览器发送过来的所有Cookie |
String |
getRealPath(String path) |
返回一虚拟路径的真实路径 |
String |
getRemoteAddr() |
返回发送此请求的客户端IP地址 |
int |
getContentLength() |
返回请求体的长度(以字节数) |
String |
getCharacterEncoding() |
返回字符编码方式 |
void |
setCharacterEncoding() |
设置请求的字符编码方式 |
int |
getServerPort() |
返回服务器接受此请求所用的端口号 |
String |
getServerName() |
返回接受请求的服务器主机名 |
String |
getProtocol() |
返回请求用的协议类型及版本号 |
String |
getContentType() |
得到请求体的MIME类型 |
转发
request在实现转发时,通过request.setAttribute方法和request.getAttribute方法带数据到目的地时,就是通过request对象中的map集合带数据,这个request对象上的map集合以及request对象所在的范围即称之为是一个域对象。
如果一个对象具备可以被访问的范围,通过这个对象上的map集合可以在整个范围内实现数据的共享。这样的对象就叫做域对象。
在request对象上提供了往域对象(map)中存数据的方法以及取数据的方法:
-
request.setAttribute(String attrName, Object attrValue);
往request域中存入一个域属性,属性名(key)只能是字符串,属性值(value)可以是任意类型。
-
request.getAttribute(String attrName);
根据属性名(key)获取对应的属性值(value)。返回的是一个Object类型的对象。
转发代码
request.getRequestDispatcher(url地址/转发到资源的地址).forward(req, res);
getRequestDispatcher()
的参数可以是jsp文件或者是请求的url地址
转发图解
转发注意点
注意点:
- 一次请求, 一次响应
- 转发之后url不会发生变化
- 进行转发的两个资源(A和B)必须是同一个项目下的Web应用(jsp或servlet类等) 否则转发会失败!
- 转发时的路径中不能出现当前Web应用的访问路径, 因为服务器会帮我们加上
- 因为转发是一次请求, 因此服务器会创建一个request对象和一个response对象, 因此转发时, 会将当前Servlet中的request和response对象, 通过forward方法传递给要转发的资源
request域对象所具备的三大特征:
- 生命周期:在服务器调用Servlet程序的service方法之前,会创建代表请求的request对象,在请求处理完,响应结束时,会销毁request对象。
- 作用范围:在一次请求范围内,都可以获取到同一个request对象。
- 主要功能:和请求转发配合使用,从Servlet带数据到JSP(带数据到目的地)