HttpServletRequest对象(一)

一:HttpServletRequest介绍:

  代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,

二:Request常用的方法

  1):获得客户端信息

    getRequestURL方法返回客户端发出请求时的完整URL。
    getRequestURI方法返回请求行中的资源名部分。
    getQueryString 方法返回请求行中的参数部分。
    getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
    getRemoteAddr方法返回发出请求的客户机的IP地址。
    getRemoteHost方法返回发出请求的客户机的完整主机名。

    getRemotePort方法返回客户机所使用的网络端口号。
    getLocalAddr方法返回WEB服务器的IP地址。
    getLocalName方法返回WEB服务器的主机名。

  2):获得客户机请求头

    getHeader(string name)方法:String
    getHeaders(String name)方法:Enumeration
    getHeaderNames()方法

  3):获得客户机请求参数(客户端提交的数据)

    

  • getParameter(String)方法(常用)
  • getParameterValues(String name)方法(常用)
  • getParameterMap()方法(编写框架时常用)
  • getParameterNames()方法(不常用)

三:request接收表单提交中文参数乱码问题

  1):post方式提交表单

  使用request.setCharacterEncoding("UTF-8");

  2):get方式提交表单

  解决方法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组

以指定的编码构建字符串,解决乱码问题。

  String name=request.getParameter("name");//接收数据

  name=new String(name.getBytes("ISO8859-1"),"UTF-8");//获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后

  通过字节数组以指定的编码构建字符串,解决乱码问题。

  3):URL地址后跟中文数据。

<a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=gacl&name=徐达沛">点击</a>

  <a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=gacl&name=<%=URLEncoder.encode("陆伟", "UTF-8")%>">点击</a>

四:request对象实现请求转发

在servlet中实现请求转发的两种方式:

  servletcontext的getRequestDispatcher(String path)方法。该方法返回一个RequestDispatcher对象。调用这个对象的forward方法

1 RequestDispatcher reqDispatcher =this.getServletContext().getRequestDispatcher("/test.jsp");
2 reqDispatcher.forward(request, response);

通过request对象提供的getRequestDispatche(String path)方法,返回一个requestDispatcher对象。
request.getRequestDispatcher("/test.jsp").forward(request, response);

request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作
  • setAttribute(String name,Object o)方法,将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute("data", data);
  • getAttribute(String name)方法,获取request对象的name属性的属性值,例如:request.getAttribute("data")
  • removeAttribute(String name)方法,移除request对象的name属性,例如:request.removeAttribute("data")
  • getAttributeNames方法,获取request对象的所有属性名,返回的是一个,例如:Enumeration<String> attrNames = request.getAttributeNames();
请求重定向和请求转发的区别:
  一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发 /307
   通知浏览器去访问另外一个web资源进行处理,称为请求重定向/302
  
原文地址:https://www.cnblogs.com/bulrush/p/5668430.html