WEB核心【请求重定向】第十三章

简介: 目录1,请求重定向【阶段重点】1.1:简述&原理&格式1.2:延迟重定向1.3:请求转发和重定向的区别1.4:资源跳转问题目标:1,理解请求重定向原理2,熟练使用请求重定向的多种格式写法3,掌握请求转发和重定向区别javaEE资源跳转方式有两种:1,重定向2,请求转发 3,浏览器发现302状态码,就会

1,请求重定向【阶段重点】

1.1:简述&原理&格式

目标:

1,理解请求重定向原理

2,熟练使用请求重定向的多种格式写法

3,掌握请求转发和重定向区别

javaEE资源跳转方式有两种:

1,重定向

2,请求转发

image.gif编辑

3,浏览器发现302状态码,就会进行自动请求。请求路径,就是响应头中location

请求重定向:依赖浏览器

请求路径会发生改变。请求转发地址栏路径没有改变。

开发简化:(BaseServlet、SpringMVC)

请求重定向:return "redirect:/路径?参数列表";
                    return "redirect:http://网址";

@WebServlet({"/d2"})
public class Demo2Servlet extends BaseServlet {
    /**
     * 开发简化写法(BaseServlet子类,SpringMVC)
     * @return
     */
    public String run1(){
        System.out.println("d2-run1");
        return "redirect:/index.jsp";
    }
    /**
     * 开发简化写法(BaseServlet子类,SpringMVC)
     * @return
     */
    public String run2(){
        System.out.println("d2-run2");
        return "redirect:http://www.czxy.com";
    }
}

image.gif

    1. 完整写法:(适用于 过滤器组件)

    项目内跳转:response对象.sendRedirect("/项目名/路径?参数列表");

    外网跳转:response对象.sendRedirect("http://网址");

    /**
     * 完整写法(过滤器等组件)
     * @return
     */
    public void run3() throws IOException {
        System.out.println("d2-run3");
        //getResponse().sendRedirect("/day08_1/index.jsp");
        getResponse().sendRedirect(getServletContext().getContextPath()+"/index.jsp");
    }
    /**
     * 完整写法(过滤器等组件)
     * @return
     */
    public void run4() throws IOException {
        System.out.println("d2-run4");
        getResponse().sendRedirect("http://www.czxy.com");

    image.gif

      1. 原理写法:(适用于非servlet组件,通过response对象进行跳转)(了解)

      请求重定向原理:

      响应状态码:302

      响应头设置:location=

      /**
       * 原理写法(适用于非servlet组件,通过response对象进行跳转)
       * @return
       */
      public void run5() throws IOException {
          System.out.println("d2-run5");
          getResponse().setStatus(302);
          getResponse().setHeader("location",getServletContext().getContextPath()+"/index.jsp");}
      /**
       * 原理写法(适用于非servlet组件,通过response对象进行跳转)
       * @return
       */
      public void run6() throws IOException {
          System.out.println("d2-run6");
          getResponse().setStatus(302);
          getResponse().setHeader("location","http://www.czxy.com");
      }

      image.gif

      1.2:延迟重定向

      image.gif编辑

      /**
       * 延迟重定向-3秒
       */
      public void run7() throws IOException {
          //getResponse().setHeader("refresh","3;http://www.czxy.com");
          //getResponse().setHeader("refresh","3;/day08_1/index.jsp");
          getResponse().setHeader("refresh","3;"+getServletContext().getContextPath()+"/index.jsp");
          //满足用户体验
          getResponse().getWriter().write("<script>\n" +
                  "        window.onload = function (ev) {\n" +
                  "            var numNode = document.getElementById(\"num\");\n" +
                  "            setInterval(function () {\n" +
                  "                numNode.innerHTML = parseInt(numNode.innerHTML)-1;\n" +
                  "            },1000);\n" +
                  "        }\n" +
                  "    </script>\n" +
                  "    <h1>倒计时,还有<font color=\"red\" id=\"num\">3</font>秒跳转</h1>");
      }

      image.gif

      1.3:请求转发和重定向的区别

      image.gif编辑

      image.gif编辑1,请求转发使用request对象,重定向使用response对象

      2,请求转发使用服务器端路径,重定向使用客户端路径

      3,请求转发不能跳转外网,重定向可以

      4,请求转发是服务器内部的跳转,不依赖网速,跳转速度极快。重定向是依赖浏览器的跳转,严重依赖网速,跳转速度略慢

      5,请求转发:请求一次,响应一次。占用资源少

           重定向:重定向N次,响应n+1次。占用大量资源

      6,请求转发可以访问受保护目录资源,重定向不能

      7,请求转发不会改变地址栏路径,重定向会改变路径

           安全:请求转发。会隐藏后面转发程序的访问路径。

           程序Bug:由于请求转发不会更改地址,会导致用户重复访问某个Servlet。改为重定向

      8,请求转发可以使用request作用域,重定向不能

      1.4:资源跳转问题

      请求转发跳转问题:

      请求转发因为请求路径在转发多次也不会改变。

      如果跳转中出现相对路径,相对路径的出发目录

      请求地址栏目录路径来作为相对路径的出发目录

      image.gif编辑

      <img src="/day09_1/aaa/3.png"/>

      解决方案:

        1. 根本解决: 将目标资源 资源路径全部转换为绝对路径:  /项目名/资源名.扩展名
        2. 不用请求转发,用请求重定向。(治标不治本)

        最后:

              如果文章对您有帮助,就拿起小手赶紧给博主点赞💚评论❤️收藏💙 一下吧!

             愿我们在未来的日子里。熠熠生辉!!!

        相关文章
        |
        存储 开发框架 JSON
        在 Python 中,如何处理 Web 请求和响应?
        【2月更文挑战第26天】【2月更文挑战第90篇】在 Python 中,如何处理 Web 请求和响应?
        368 0
        [Web程序设计]实验: 请求与响应
        [Web程序设计]实验: 请求与响应
        229 0
        |
        2月前
        |
        缓存 安全 Java
        《深入理解Spring》过滤器(Filter)——Web请求的第一道防线
        Servlet过滤器是Java Web核心组件,可在请求进入容器时进行预处理与响应后处理,适用于日志、认证、安全、跨域等全局性功能,具有比Spring拦截器更早的执行时机和更广的覆盖范围。
        |
        11月前
        |
        安全 Java 数据安全/隐私保护
        springSecurity学习之springSecurity过滤web请求
        通过配置 Spring Security 的过滤器链,开发者可以灵活地管理 Web 请求的安全性。理解核心过滤器的作用以及如何配置和组合这些过滤器,可以帮助开发者实现复杂的安全需求。通过具体的示例代码,可以清晰地了解 Spring Security 的配置方法和实践。
        514 23
        |
        开发框架 缓存 .NET
        并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
        并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
        504 0
        |
        前端开发 数据库 Python
        使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
        【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
        542 7
        |
        存储 网络协议 Linux
        《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
        《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
        179 0
        |
        SQL 存储 安全
        Web安全-CSRF跨站请求伪造
        Web安全-CSRF跨站请求伪造
        388 4
        |
        监控 安全 Apache
        构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
        【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
        572 0
        |
        JSON 前端开发 Java
        一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
        一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
        865 6

        热门文章

        最新文章