您的位置:首页 > 产品设计 > UI/UE

ServletRequest 与 ServletResponse 接口

2020-07-14 06:15 597 查看

目录

  • ServletResponse
  • ServletRequest

    ServletRequest 由 Servlet 容器来管理,当客户请求到来时,Servlet 容器创建一个

    ServletRequest 对象,封装请求数据
    ,同时创建一个
    ServletResponse 对象,封装响应数据
    。这两个对象将被容器作为参数传递给 Servlet 的 service() 方法的,Servlet 利用 ServletRequest 对象获取客户端发来的请求数据,利用ServletResponse 对象发送响应数据。

    已继承的子接口:HttpServletRequest
    已实现的抽象类:ServletRequestWrapper 抽象类实现 ServletRequest 接口;HttpServletRequestWrapper 抽象类继承 ServletRequestWrapper 抽象类并实现 HttpServletRequest 接口。

    HttpServletRequest

    HttpServletRequest 接口继承 ServletRequest 接口,是对 http 协议请求消息的一种封装,为 HttpServlet 容器提供请求信息。HttpServlet 容器创建一个HttpServletRequest 对象,并将其作为参数传递给 HttpServlet 容器的服务方法(doGet、doPost等)。

    HttpServletRequest 对象有一大堆获取客户端请求信息的方法。

    请求转发

    一种在

    服务器内部的资源跳转方式
    。即访问某个资源后跳转到下一个资源继续访问。

    使用步骤:

    1、 通过 request 对象获取请求转发器对象:RequestDispatcher
    getRequestDispatcher(String path)。 // path 要转发到的资源路径。
    2、使用 RequestDispatcher 对象来进行转发:forward(ServletRequest request, ServletResponse response)

    代码:

    //使用请求转发
    req.getRequestDispatcher("/下一个资源路径").forward(req, resp);


    数据共享:
    request 对象的作用域在一次请求的范围,一般用于请求转发的多个资源中共享数据

    转发特点:

    1、浏览器地址栏路径不发生变化
    2、只能转发到

    当前服务器内部
    资源中。
    3、转发是一次请求。浏览器请求一次,访问多个资源。


    ServletResponse

    已继承的子接口:HttpServletResponse
    已实现的抽象类:ServletResponseWrapper 抽象类实现 ServletResponse 接口;HttpServletResponseWrapper 抽象类继承 ServletResponseWrapper 抽象类并实现 HttpServletResponse 接口。

    HttpServletResponse

    HttpServletResponse 接口继承自 ServletResponse 接口,主要用于封装 HTTP 响应消息。设置响应消息发送给浏览器客户端。

    设置响应消息:

    • 设置响应行 格式:HTTP/1.1 200 ok
    • 设置状态码:setStatus(int sc)
  • 设置响应头:setHeader(String name, String value)
  • 设置响应体:
      获取输出流 字符输出流:PrintWriter getWriter()
    • 字节输出流:ServletOutputStream getOutputStream()
  • 使用输出流,将数据输出到客户端浏览器
  • 重定向

    重定向(Redirect)也是一种资源跳转的方式。就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。

    重定向(redirect)告诉浏览器的信息:

    1、告诉浏览器重定向:状态码302
    2、告诉浏览器B资源的路径: 响应头location:其他资源的路径

    代码:

    // 第一种代码实现
    //1. 设置状态码为302
    response.setStatus(302);
    //2.设置响应头location,响应头location的值为/day15/responseDemo2
    response.setHeader("location","/day15/responseDemo2");
    
    // 第二种简单上述代码实现
    // 简单的重定向方法
    response.sendRedirect("/day15/responseDemo2");

    重定向的特点:

    1、地址栏发生变化。
    2、重定向可以访问其他站点(服务器)的资源。
    3、重定向是两次请求。不能使用 request 对象来共享数据。

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: