Request的功能

2018-09-18  本文已影响0人  ddxuzengbin

1.获取客户端相关的信息

getRequestURL方法 -- 返回客户端发出请求完整URL
getRequestURI方法 -- 返回请求行中的资源名部分
getQueryString方法 -- 返回请求行中的参数部分
getRemoteAddr方法 -- 返回发出请求的客户机的IP地址
getMethod -- 得到客户机请求方式
getContextPath -- 获得当前web应用虚拟目录名称 -- 在写路径时不要将web应用的虚拟路径的名称写死, 应该在需要写web应用的名称的地方通过getContextPath方法动态获取


2.获取请求头信息

getHeader(name)方法 --- String
getHeaders(String name)方法 --- Enumeration<String>
getHeaderNames方法 --- Enumeration<String>
getIntHeader(name)方法 --- int
getDateHeader(name)方法 --- long(日期对应毫秒)


3.获取请求参数

getParameter(String name) --- String 通过name获得值
getParameterValues(String name) --- String[ ] 通过name获得多值 checkbox
getParameterMap() --- Map<String,String[ ]> key :name value: 多值
getParameterNames() --- Enumeration<String> 获得所有name

请求参数中的乱码问题 -- 编码时和解码时使用码表不一致造成的

那如何解决GET提交的乱码问题呢? -- 根据乱码产生的原理, 可以手动的编解码来解决乱码问题
username = new String(username.getBytes("iso-8859-1"), "utf-8");


4.实现请求转发

请求重定向: 302+location
请求转发: 实现资源的跳转, 服务器内部的跳转. 一次请求 一次响应 地址栏不会发生变化
RequestDispatcher dis = request.getRequestDispatcher("xxxxx");//调度器
dis.forward(request, response);//实现请求转发


5.实现请求包含

所谓的请求包含指的是服务器内部实现资源合并的效果
如果浏览器请求ServletA, 在A的内部可以通过
request.getRequestDispatcher("B的虚拟路径").include(request, response);将ServletB包含进来, 这时将由A和B共同处理该请求, B处理的结果将会并入A处理的结果, 一起响应给浏览器


6.作为域对象来使用

域对象: 一个对象具有可以被看见的范围, 利用这个对象身上的map就可以实现资源的共享, 像这样的对象就称之为域对象
setAttribute(String name, Object valObj);
getAttribute(String name);
removeAttribute(String name);
getAttributeNames();

生命周期: 一次请求开始, 到一次请求结束
作用范围: 在整个请求链上都可以看见
主要功能: 在转发时带数据到目的地

上一篇 下一篇

猜你喜欢

热点阅读