Request常⽤⽅法(总结)
⼀、HttpServletRequest介绍
  HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的⽅法,可以获得客户端请求的所有信息。
⼆、Request常⽤⽅法
2.1、获得客户机信息
  getRequestURL⽅法返回客户端发出请求时的完整URL。
  getRequestURI⽅法返回请求⾏中的资源名部分。
  getQueryString ⽅法返回请求⾏中的参数部分。
  getPathInfo⽅法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它
以“/”开头。
  getRemoteAddr⽅法返回发出请求的客户机的IP地址。
  getRemoteHost⽅法返回发出请求的客户机的完整主机名。
  getRemotePort⽅法返回客户机所使⽤的⽹络端⼝号。
  getLocalAddr⽅法返回WEB服务器的IP地址。
  getLocalName⽅法返回WEB服务器的主机名。
2.2、获得客户机请求头
  getHeader(string name)⽅法:String
  getHeaders(String name)⽅法:Enumeration
  getHeaderNames()⽅法
2.3、获得客户机请求参数(客户端提交的数据)
getParameter(String)⽅法(常⽤)
getParameterValues(String name)⽅法(常⽤)
getParameterNames()⽅法(不常⽤)
getParameterMap()⽅法(编写框架时常⽤)
3.6、提交中⽂数据乱码问题总结
  1、如果提交⽅式为post,想不乱码,只需要在服务器端设置request对象的编码即可,客户端以哪种编码提交的,服务器端的request对象就以对应的编码接收,⽐如客户端是以UTF-8编码提交的,那么服务器端request对象就以UTF-8编码接收
(request.setCharacterEncoding(“UTF-8”))
  2、如果提交⽅式为get,设置request对象的编码是⽆效的,request对象还是以默认的ISO8859-1编码接收数据,因此要想不乱码,只能在接收到数据后再⼿⼯转换,步骤如下:
  1).获取获取客户端提交上来的数据,得到的是乱码字符串,data=”è??”
  String data = Parameter(“paramName”);
  2).查ISO8859-1码表,得到客户机提交的原始数据的字节数组
  byte[] source = Bytes(“ISO8859-1”);
  3).通过字节数组以指定的编码构建字符串,解决乱码
  data = new String(source, “UTF-8”);
  通过字节数组以指定的编码构建字符串,这⾥指定的编码是根据客户端那边提交数据时使⽤的字符编码来定的,如果是GB2312,那么就设置成data = new String(source, “GB2312”),如果是UTF-8,那么就设置成data = new String(source, “UTF-8”)
四、Request对象实现请求转发
4.1、请求转发的基本概念
字符串转数组编码方式
  请求转发:指⼀个web资源收到客户端请求后,通知服务器去调⽤另外⼀个web资源进⾏处理。
  请求转发的应⽤场景:MVC设计模式
  在Servlet中实现请求转发的两种⽅式:
  1、通过ServletContext的getRequestDispatcher(String path)⽅法,该⽅法返回⼀个RequestDispatcher对象,调⽤这个对象的forward ⽅法可以实现请求转发。
例如:将请求转发的test.jsp页⾯
1 RequestDispatcher reqDispatcher =ServletContext().getRequestDispatcher(“/test.jsp”);
2 reqDispatcher.forward(request, response);
  2、通过request对象提供的getRequestDispatche(String path)⽅法,该⽅法返回⼀个RequestDispatcher对象,调⽤这个对象的forward ⽅法可以实现请求转发。
例如:将请求转发的test.jsp页⾯
RequestDispatcher(“/test.jsp”).forward(request, response);
  request对象同时也是⼀个域对象(Map容器),开发⼈员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。
 request对象作为⼀个域对象(Map容器)使⽤时,主要是通过以下的四个⽅法来操作
setAttribute(String name,Object o)⽅法,将数据作为request对象的⼀个属性存放到request对象中,例如:request.setAttribute(“data”, data); getAttribute(String name)⽅法,获取request对象的name属性的属性值,例如:Attribute(“data”)
removeAttribute(String name)⽅法,移除request对象的name属性,例如:veAttribute(“data”)
getAttributeNames⽅法,获取request对象的所有属性名,返回的是⼀个,例如:Enumeration attrNames = AttributeNames();
4.2、请求重定向和请求转发的区别
  ⼀个web资源收到客户端请求后,通知服务器去调⽤另外⼀个web资源进⾏处理,称之为请求转发/307。
  ⼀个web资源收到客户端请求后,通知浏览器去访问另外⼀个web资源进⾏处理,称之为请求重定向/302。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。