ServletRequest使用介绍


ServletRequest:

定义将客户端请求信息提供给某个 servlet 的对象;servlet 容器创建 ServletRequest 对象,并将该对象作为参数传递给该servlet的service方法 ;

通过文档阅读可以看到HttpServletReuqest不是相关请求的顶级接口,它继承自父接口——ServletRequest:

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息;

通过Request对象进行的常用操作:

    • 获取客户机信息
    • 获取请求头信息
    • 获取请求参数
    • 利用请求域传递对象
  • ## 获取请求行信息

    • ### API介绍
String getMethod()  获取请求方式的类型

String getRequestURI()  获取请求行中的资源名部分:/项目名/资源名

StringBuffer getRequestURL()  获取客户端发出请求完整URL 如http://localhost:8080/项目名:资源名
    注:
    uri: 统一资源标识符,用来标识一个资源,资源路径(相当于身份证)
    url: 统一资源定位符,是一种具体的URI,可以用来标识一个资源.并且指明了如何定位一个资源(相当于身份证中的地址)

String getProtocol()  获取当前协议的名称和版本

String getRemoteAddr()  获取客户端的IP地址
  • ## 获取请求头信息

    • ### API介绍
String getHeader(String name)  以String 的形式返回指定请求头的值

Enumeration getHeaderNames() 返回此请求包含的所有头名称的枚举
  • ## 获取请求参数

    • ### API介绍
String getParameter(String name)  根据表单的name属性 获取对应的值

String[] getParameterValues(String name)  获取name相同的所有value 如复选框

Map getParameterMap()  参数名作为key,参数值作为value,封装到map中

void setCharacterEncoding(String env)  设置请求体的编码
    注意:获取请求参数之后,调用setCharacterEncoding方法无效
  • ## 其他作用

    • ### 获取工程名字 __

      • #### API介绍
String getContextPath()  获取工程名字
    • ### 获取当前

    • API介绍

String getServletPath()  获取获得客户端所请求的脚本文件的文件路径

如果请求路径是:http://localhost:8080/mytest/demo,request.getContextPath()得到的是: /mytest ,request.getServletPath()得到的是: /demo ;request.getRequestURI()得到的是: /mytest/demo ;request.getRequestURL()得到的是: http://localhost:8080/mytest/demo ;

    • ### 作为域对象

    • 域对象是一个容器,这种容器主要用于servlet与servlet之间的数据传输使用的;request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据

    • API介绍
void setAttribute(String name, Object o)  设置数据到request域

Object getAttribute(String name)  从request域获取数据

void removeAttribute(String name)  从request域移除数据
    • ### 请求转发

    • 一种在 服务器内部 的资源跳转方式

    • API介绍

RequestDispatcher getRequestDispatcher(String path) 获取请求转发器(request对象方法)

void forward(ServletRequest request, ServletResponse response) 将请求转发到另一个资源(servlet)上(RequestDispatcher对象的方法)
      • 使用步骤
1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
      • 特点
1. 浏览器地址栏路径不发生变化
2. 只能转发到当前服务器内部资源中
3. 转发是一次请求


原文链接:https://www.cnblogs.com/coder-zyc/p/10620281.html