Request基础
# request对象和response对象的原理
- request和response对象是由服务器创建的
- request对象是来获取请求信息,response对象是来设置响应消息
request对象继承体系结构
ServletRequest - - 接口
| 继承
HttpServletRequest - - 接口
| 实现
org.apache.catalina.connector.RequestFacade 类(tomcat)
request功能
获取请求信息数据
获取请求行数据
GET /PAG /demo1?name=zhangsan HTTP/1.1
方法:
1. 获取请求方式:GET **String getMethod()** 2. 获取虚拟目录:/PAG **String getContextPath()** 3. 获取servlet路径:/demo1 **String getServletPath()** 4. 获取get方式请求参数:name=zhangsan **String getQueryString()** 5. 获取请求URL:/PAG/demo1 **String getRequestURI() : /PAG/demo1 StringBuffer getRequestURL(): http://localhost/PAG/demo1** 6. 获取协议及版本:HTTP/1.1 **String getProtocol()** 7. 获取客户机的IP地址: **String getRemoteAddr()**
获取请求头数据
方法:
(*)String getHeader(String name):通过请求体的名称获取请求头的值
Eumeration<String> getHeaderNames():获取所有的请求头名称
- 获取请求体数据
请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
步骤:- 获取流对象 `BufferedReader getReader(): 获取字符输入流,只能操作字符数据` ` ServletInputStream getInputStream(): 获取字节输入流,可以操作所有类型数据` - 再从流对象中拿数据
其他功能:
- 获取请求参数通用方式
String getParameter(String name):根据参数名称获取参数值
String[] getParameterValues(String name):根据参数名称获取参数值的数组
Eumeration<String> getHeaderNames():获取所有的请求头名称
Map<String,String[]> getParameterMap():获取所有参数的map集合
中文乱码问题:
get方式:tomcat 8 已经将get方式乱码问题解决了
post方式:会乱码
解决:在获取参数前,设置request的编程request.serCharterEncoding(“utf-8”);- 请求转发:一种在服务器内部的资源跳转方式
步骤:
通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
使用RequestDispatcher对象来进行转发:forward(ServletRequest request,ServletResponse response)
**特点: 浏览器地址栏路径不发生变化 只能转发到当前服务器内部资源中 转发是一次请求** 3. 共享数据 **域对象:一个有作用范围的对象,可以在范围内共享数据 request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据 方法:** `void setAttribute(String name,Object obj):存储数据 Object getAttitude(String name):通过键获取值 void removeAttribute(String name):通过键移除键值对` 4. 获取ServletContext `ServletContext getServletContext()`- 获取请求参数通用方式
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 A Gamer Life!
评论