Request的功能

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

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


2.获取请求头信息

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


3.获取请求参数

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

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

  • 浏览器使用什么码表打开当前页面, 就使用什么码表来发送请求参数. 因此我们可以通过控制浏览器打开页面时使用的码表, 而间接控制浏览器发送数据使用的码表

  • tomcat服务器默认使用的是ISO8859-1码表来处理浏览器发送过来的数据, 而这个码表中没有中文汉字, 所以处理中文这是必然会造成乱码

  • request.setCharacterEncoding("utf-8"); 这个方法可以指定服务器使用什么码表来处理请求, 从而解决乱码问题 但是必须注意把这行代码写在获取任何参数的代码之前

  • request.setCharacterEncoding("utf-8");这个方法是用来通知服务器使用什么编码来处理请求实体内容中的数据, POST提交的参数刚好在请求实体内容中, 所以这个方法可以处理POST提交的乱码问题.
    而GET提交发送的数据是在请求行的请求资源路径后面, 所以这个方法不起作用

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


4.实现请求转发

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

  • 在请求转发之前, 如果response缓冲区写入了数据但是还没有打给浏览器, 在请求转发时这些数据将会被清空
  • 在请求转发之前, 如果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();

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

你可能感兴趣的:(Request的功能)