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域对象所具备的三大特征:

  1. 生命周期:在服务器调用Servlet程序的service方法之前,会创建代表请求的request对象,在请求处理完,响应结束时,会销毁request对象。
  2. 作用范围:在一次请求范围内,都可以获取到同一个request对象。
  3. 主要功能:和请求转发配合使用,从Servlet带数据到JSP(带数据到目的地)
posted @ 2020-06-12 15:36  zpk-aaron  阅读(459)  评论(0编辑  收藏  举报