request对象基础

介绍

request对象是jsp中使用的频率最高的内置对象之一,表示的是客户端向服务端发送请求,主要作用就是接收客户端请求的信息,比如接收请求参数、请求头信息、Cookie,客户端IP等等

request方法

  • String getContextPath()
    获取上下文资源的路径
  • Cookie[] getCookies()
    获取Cookie
  • String getHeader(String name)
    获取头信息
  • Enumeration getHeaderNames()
    获取所有的头信息的名称
  • HttpSession getSession()
    获取HttpSession对象
  • String getServletPath()
    获取请求路径
  • String getParameter(String name)
    根据参数名称获取参数的值
  • Enumeration getParameterNames()
    获取所有的参数的名称
  • String[] getParameterValues(String name)
    根据参数名称获取多个值
  • String getRemoteAddr()
    获取客户端IP
  • void setCharacterEncoding(String env)
    设置请求的统一编码
    。。。

通过request获得请求行

  1. 获得客户端的请求方式:
    String getMethod()
    GET POST
  2. 获得请求的资源:
    • String getRequestURI()
      获得请求的uri(不包括http协议和主机名,端口号)
    • StringBuffer getRequestURL()
      获得请求的URL
    • String getContextPath()
      获取web应用的名称
    • String getQueryString()
      get提交url地址后的参数字符串
      eg:username=zhangsan&password=123

通过request获得请求头

  1. long getDateHeader(String name)
  2. String getHeader(String name)
  3. Enumeration getHeaderNames()
  4. Enumeration getHeaders(String name)
  5. int getIntHeader(String name)

通过request获得请求体

  1. String getParameter(String name)
  2. String[] getParameterValues(String name)
  3. Enumeration getParameterNames()
  4. Map<String,String[]> getParameterMap()

解决提交乱码问题

  1. 解决post提交方式的乱码:
    request.setCharacterEncoding(“UTF-8”);
  2. 解决get提交的方式的乱码:
    parameter = new String(parameter.getbytes(“iso8859-1”),”utf-8”);

    其他功能

    request是一个域对象

    request对象也是一个存储数据的区域对象,所以也具有如下方法:

  3. setAttribute(String name, Object o)

  4. getAttribute(String name)
  5. removeAttribute(String name)

请求转发

  • 获得请求转发器—-path是转发的地址
    RequestDispatcher getRequestDispatcher(String path)
  • 通过转发器对象转发
    requestDispathcer.forward(ServletRequest request, ServletResponse response)

  • 转发与重定向的区别?

    1. 重定向两次请求,转发一次请求
    2. 重定向地址栏的地址变化,转发地址不变
    3. 重新定向可以访问外部网站 转发只能访问内部资源
    4. 转发的性能要优于重定向

通过request获取客户端信息

  • request.getRemoteAddr()
    获得访问的客户端IP地址
  • request.getRemoteHost()
    获取请求客户端的完整主机名
  • request.getRemotePort()
    获取远程端口号

访问路径

  • 相对路径
    相对于前一级目录
  • 绝对路径
    转发,地址栏不变,跳转的时候不是按照跳转前后文件的目录级别来区别路径
    而是根据当前页面的地址栏的路径和跳转后的路径来获取 ,所有转发使用绝对路径避免404错误
-------------本文结束,感谢您的阅读-------------
您的支持将鼓励我继续创作!!