什么request对象?
- 就是请求对象,这个对象不是我们自己创建的,而是tomcat服务器帮助我们创建一个对象,我们直接拿来使用即可。
request对象中封装了所有的请求消息格式中的数据。
request的体系结构?
javax.servlet.ServletRequest 接口
--javax.servlet.http.HttpServletRequest 接口
--org.apache.catalina.connector.RequestFacade 实现类
request对象原理?
- 当我们使用浏览器向服务器发送请求的时候,tomcat服务器会创建一个request对象
- request对象被各种传递,直到传递到doGet()/doPost()中
request对象常见的方法?
1. 获取请求消息的方法
- a. 获取请求行的方法
String getMethod()//获取请求方式
String getContextPath()//获取项目的虚拟路径
String getServletPath()//获取访问的servlet的虚拟路径
String getRequestURI()//获取请求的URI
StringBuffer getRequestURL()//获取请求的URL
String getQueryString()//获取请求参数
// 注意:只有get请求,请求参数才会放在请求行中,才能使用这个方法
String getProtocol()//获取协议版本号
String getRemoteAddr()//获取IP地址
- b.获取请求头的方法
String getHeader(String name)//根据请求头获取对应的值
Enumeration<String> getHeaderNames()//获取所有的请求头
Enumeration<String> getHeaders(String name)//根据请求头获取对应的所有的值
//username:tom
//username:jerry
int getIntHeader(String name)//根据请求头获取对应的值,但是值只能是int类型
- c.获取请求体的方法
注意:只有post请求,才有请求体内容,才可以使用以下的方法
ServletInputStream getInputStream()
BufferedReader getReader()
*2.其他功能的方法
-
a. 获取请求参数的通用方法
*String getParameter(String name)//根据表单项的name属性值获取value属性值 Enumeration<String> getParameterNames()//获取所有的表单项的name属性值 String[] getParameterValues(String name)//根据表单项的name属性值获取所有的value属性值 *Map<String,String[]> getParameterMap()//将所有的表单项的name属性值和value属性值都封装到了map中
- 获取请求参数中文乱码问题?
-
get请求:
tomcat8之前:中文会出现乱码
tomcat8之后:中文不会出现乱码 -
post请求:
中文会出现乱码
为什么会出现中文乱码?
两边编码方式不一致才会出现中文乱码
tomcat服务器默认编码为ISO-8859-1 -
怎么解决中文乱码?
只需要修改服务器默认编码即可
request.setCharacterEncoding(“utf-8”);
-
- 获取请求参数中文乱码问题?
-
b. 请求转发相关方法
请求转发可以帮助实现servlet到其他的servlet或者是页面-
Request对象:
public RequestDispatcher getRequestDispatcher(String path) -
RequestDispatcher:
public void forward(ServletRequest request, ServletResponse response) -
请求转发的特点?
- 请求转发只能进行内部跳转
- 请求转发地址值是不会发生改变的
- 请求转发只包含一次请求和一次响应
-
-
c. 共享相关方法
- 在web核心中有四大域对象,每个域对象管理自己所管辖的域范围
- request不是一般的对象,是一个域对象,它所管辖的范围是一次请求和一次响应之间的范围
- 凡是域对象,都具备的三个方法:
- setAttribute(String key, Object value)
- getAttribute(String key)
- removeAttriubte(String key)
注意:只能使用转发来实现资源的共享