什么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)
注意:只能使用转发来实现资源的共享 
 
 










