• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

JavaWeb——Response设置响应数据功能和amp;完成重定向和amp;资源路径问题

武飞扬头像
北岭山脚鼠鼠
帮助1

学新通

 在体系结构上与Request对象相似。

学新通

Reponse设置响应数据功能介绍 

响应数据结构

学新通

 响应行有三部分组成,协议 状态码 状态描述

响应头和请求头一样都是键值对的形式

响应体和请求体一样也是通过流的方式在浏览器之间传输数据,字符就是纯文本,字节数据比如说图片数据

Response完成重定向

重定向:一种资源跳转方式

学新通

 第一步:

设置响应状态码302,让浏览器去请求别的资源

第二步:

设置响应头location

第三步:

浏览器访问重定向的资源

准备两个资源A和B和一个前端页面rep.html

资源A

  1.  
    @WebServlet("/resp1")
  2.  
    public class ResponseDemo1 extends HttpServlet {
  3.  
    @Override
  4.  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  5.  
    System.out.println("resp1....");
  6.  
    //重定向
  7.  
    //1.设置响应状态码 302
  8.  
    response.setStatus(302);
  9.  
    //2. 设置响应头 Location
  10.  
    response.setHeader("Location","/request-demo/resp2");
  11.  
    }
  12.  
    @Override
  13.  
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  14.  
    this.doGet(request, response);
  15.  
    }
  16.  
    }
学新通

资源B

  1.  
     
  2.  
    @WebServlet("/resp2")
  3.  
    public class ResponseDemo2 extends HttpServlet {
  4.  
    @Override
  5.  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  6.  
    System.out.println("resp2....");
  7.  
    }
  8.  
     
  9.  
    @Override
  10.  
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  11.  
    this.doGet(request, response);
  12.  
    }
  13.  
    }

前端页面的表单

  1.  
    <form action="/request-demo/resp1" method="get">
  2.  
    <input type="text" name="username"><br>
  3.  
    <input type="password" name="password"><br>
  4.  
    <input type="checkbox" name="hobby" value="1"> 游泳
  5.  
    <input type="checkbox" name="hobby" value="2"> 爬山 <br>
  6.  
    <input type="submit">
  7.  
    </form>

注意:这里要使用无痕浏览页面访问

提交表单后的输出如下

两个资源都被访问了 

学新通

简化方式完成重定向

资源A修改

  1.  
    @WebServlet("/resp1")
  2.  
    public class ResponseDemo1 extends HttpServlet {
  3.  
    @Override
  4.  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  5.  
    System.out.println("resp1....");
  6.  
    /* //重定向
  7.  
    //1.设置响应状态码 302
  8.  
    response.setStatus(302);
  9.  
    //2. 设置响应头 Location
  10.  
    response.setHeader("Location","/request-demo/resp2");*/
  11.  
     
  12.  
    //简化方式完成重定向
  13.  
    response.sendRedirect(contextPath "/resp2");
  14.  
    //response.sendRedirect("https://www.bilibili.com");
  15.  
    }
  16.  
    @Override
  17.  
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  18.  
    this.doGet(request, response);
  19.  
    }
  20.  
    }
学新通

重定向的资源也可以是其他服务器的资源

重定向特点: 

学新通

有两个request域,不能共享数据 

路径问题

重定向和转发需要的路径不同,重定向多一个虚拟目录

  1.  
    @Override
  2.  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  3.  
    System.out.println("resp1....");
  4.  
    //简化方式完成重定向
  5.  
    //动态获取虚拟目录
  6.  
    String contextPath = request.getContextPath();
  7.  
    // response.sendRedirect(contextPath "/resp2");
  8.  
    response.sendRedirect("https://www.bilibili.com");
  9.  
    }

虚拟目录的路径地址可以通过pom.xml下的path标签动态修改虚拟目录地址 

学新通 

 动态获取虚拟目录

降低耦合性

  1.  
    @Override
  2.  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  3.  
    System.out.println("resp1....");
  4.  
    //简化方式完成重定向
  5.  
    //动态获取虚拟目录
  6.  
    String contextPath = request.getContextPath();
  7.  
    response.sendRedirect(contextPath "/resp2");
  8.  
    // response.sendRedirect("https://www.bilibili.com");
  9.  
    }

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgakcag
系列文章
更多 icon
同类精品
更多 icon
继续加载