HttpServletRequest
在HttpServlet api中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息,由于HTTP请求分为请求消息行,请求消息头,请求消息体三部分,因此在HttpServletRequest接口中定义了获取请求行,请求头,请求体的相关方法;
获取请求行
getRequestURI() : 获取资源的绝对路径
URI和URL区别
url:http://localhost:8080/Request/request1 (完整) uri:/Request/request1 (部分)
getProtocol() : 获取协议和版本
getQueryString() : 获取查询字符串
getMethod() : 获取请求方式
getRemoteAddr() : 获取客户端IP
getContextPath() : 获取当前Web应用的路径
获取请求头
getHeaderNames() : 获取所有请求头中的key
getHeader(String name) : 获取具体的请求头中的value(有单个值)
getHeaders(String name) : 获取具体的请求头中的value(有多个值),例如accept属性
getIntHead(String name) : 如果已知返回值为int类型,可以直接使用该方法
getDateHead(String name) : 如果已知返回值为long类型,可以直接使用该方法
获取请求体
getParameterNames : 获取所有请求参数的key
getParameter(String name) : 根据参数的key,获取对应的value(单个值)
getParameterValues(String name) : 根据参数的key,获取对应的value(多个值)
getParameterMap : 获取所有的请求参数key和value,并封装在Map集合中
生命周期
创建 : 服务器收到请求时
销毁 : 响应完成
request域存取数据
request.getRequestDispatcher(String path).forward(request, response) : 转发请求给服务器内另一个资源.path路径必须以"/"开始,该"/"代表的是当前应用的根目录
request.setAttribute(String name, Object o) : 向request对象中存储一个数据
request.getAttribute(String name) : 根据key获取request对象中的一个数据
request.removeAttribute(String name) : 根据key移除request对象中的一个数据
转发和重定向区别:
1、转发一次请求、一次响应,重定向 两次请求 两次响应 2、转发只能跳转站内程序,重定向定向任何站点 3、转发 URL地址不变 ,重定向URL地址改变 4、转发 对客户端不可见,重定向对客户端可见 5、转发共享同一个Request中数据,重定向两次请求,不同Request对象,不能共享Request数据