Request
一. 概述
request,请求,封装了用户在请求资源时所带的请求行、头、体中的内容
request是由tomcat创建的。
二. 功能
2.1 获取请求行、头、体中的内容
2.1.1 请求行
- getMethod():获取请求方式
- getContextPath():获取请求的虚拟目录(项目名):/day25_1test
- getRequestURI():获取请求的uri:/day25_1test/insert
- getQueryString():获取请求参数
- 只有get提交,可以获取,因为get提交的参数在地址栏上;而post提交的参数被封装在了请求体中
- getProtocol():获取协议版本
- getRemoteAddr():获取客户端的ip
2.1.2 请求头
- getHeader(String name):通过指定的请求头名称获取对应的值
- getHeaderNames():获取所有请求头的名称
2.1.2 请求体
注:只有post提交才有请求体
- getReader()
2.1.3 获取请求参数的通用方法
- getParameter(String):获取指定参数的值
- getParameterNames():获取所有提交参数的参数名称
- getParameterValues():获取指定参数的所有值
- getParameterMap():获取所有提交参数键值对的集合,返回Map<String ,String[]>
三. request的继承体系
org.apache.catalina.connector.RequestFacade@52a988f6
实现
HttpServletRequest
继承
ServletRequest
四. 中文乱码问题
- get
- 在tomcat 8及以后的版本中,tomcat已经自己解决了乱码问题
- 在tomcat 7及以下的版本中,
- String user = request.getParameter("user");
user = new String(user.getBytes("iso8859-1"), "utf-8");
- String user = request.getParameter("user");
- post
- request.setCharacterEncoding("utf-8");
五. 请求转发
步骤:
1、获取转发器对象,并指明跳转的目标地址
request.getRequestDispatcher( 目标地址 );
2、执行转发
dispatcher.forward(request, response);
注:
1、不能写项目名
2、可以跳转到其他Servlet 或者 页面 中
3、不能跳转到其他网站的资源
4、请求转发的地址栏不发生变化
5、请求转发只执行了一次请求
六. request是一个域对象
域对象的通用方法:
- setAttribute(String , Object):将数据以键值对的形式存储到request对象中
- getAttribute(String):通过将获取request对象中对应的值
- removeAttribute(String):通过指定的键删除request对象中存储的键值对
注:
1、setAttribute()可以存储任何数据类型的值
2、request域对象的生命周期是一次请求