【Servlet】服务器内部转发以及客户端重定向

文章目录

    • 一、服务器内部转发:request.getRequestDispatcher("...").forward(request, response);
    • 二、客户端重定向:response.sendRedirect("×××");
    • 三、服务器内部转发代码示例
    • 四、客户端重定向代码示例

一、服务器内部转发:request.getRequestDispatcher(“…”).forward(request, response);

一次请求响应的过程,对于客户端而言,内部经过了多少次转发,客户端是不知道的。地址栏中的URL是不会变化的。

内部经过3、4次跳转都是一次请求响应。如图所示:

image-20240402144534703


二、客户端重定向:response.sendRedirect(“×××”);

两次请求响应的过程。客户端肯定知道请求URL有变化。如图所示:

image-20240402144623662


三、服务器内部转发代码示例

服务器内部转发:证明可通过代码断点调试

Demo06Servlet.java

// 演示服务器端内部转发
public class Demo06Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("demo06....");// 服务器端内部转发request.getRequestDispatcher("demo07").forward(request, response);}
}

Demo07Servlet.java

public class Demo07Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("demo07....");}
}

web.xml

<servlet><servlet-name>Demo06Servlet</servlet-name><servlet-class>com.atguigu.servlets.Demo06Servlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>Demo06Servlet</servlet-name><url-pattern>/demo06</url-pattern>
</servlet-mapping><servlet><servlet-name>Demo07Servlet</servlet-name><servlet-class>com.atguigu.servlets.Demo07Servlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>Demo07Servlet</servlet-name><url-pattern>/demo07</url-pattern>
</servlet-mapping>

四、客户端重定向代码示例

Demo06Servlet.java

// 演示服务器端内部转发以及客户端重定向
public class Demo06Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("demo06....");// 客户端重定向response.sendRedirect("demo07");}
}

Demo07Servlet.java

public class Demo07Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("demo07....");}
}

web.xml

<servlet-mapping><servlet-name>Demo06Servlet</servlet-name><url-pattern>/demo06</url-pattern>
</servlet-mapping><servlet><servlet-name>Demo07Servlet</servlet-name><servlet-class>com.atguigu.servlets.Demo07Servlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>Demo07Servlet</servlet-name><url-pattern>/demo07</url-pattern>
</servlet-mapping>

访问demo06,一敲回车,可以发现它发送了两次请求

点击demo06的请求,可以发现状态码为302(重定向),Location也变成了demo07

image-20240305111623108

demo07的状态码则是200

image-20240305111754189

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/788574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小象超市(原美团买菜) 的大屏图表

文章目录 概要技术细节技术名词解释小结 概要 20203年12月1日&#xff0c;美团旗下自营零售品牌“美团买菜”升级为全新品牌“小象超市”。 &#xff0c;“小象超市”坚持美团自营零售模式&#xff0c;通过在社区设立的集存储、分拣、配送为一体的便民服务站&#xff0c;为社区…

go之web框架gin

介绍 Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martini 的 API&#xff0c;性能要好得多&#xff0c;多亏了 httprouter&#xff0c;速度提高了 40 倍。 如果您需要性能和良好的生产力&#xff0c;您一定会喜欢 Gin。 安装 go get -u github.com/gin-gonic/g…

【测试篇】接口测试

接口测试&#xff0c;可以用可视化工具 postman。 如何做接口测试&#xff1f;&#xff1f; 我们可以先在浏览器中随机进入一个网页&#xff0c;打开开发者工具&#xff08;F12&#xff09;。 随便找一个接口Copy–>Copy as cURL(bash) 打开postman 复制地址 进行发送。 …

R统计实战:详解机器学习Adaboost的操作步骤与应用

一、引言 机器学习是人工智能的核心领域之一&#xff0c;其重要性体现在其能够从数据中自动学习并改进的能力上。在实际问题中&#xff0c;机器学习已经被广泛应用于各个领域&#xff0c;包括但不限于金融、医疗、电子商务、社交网络等。例如&#xff0c;在金融领域&#xff0c…

maven打包本地依赖打进去

在 Maven 项目中&#xff0c;如果你需要包含本地的 jar 包依赖&#xff0c;并希望这些依赖在打包的时候被包含进去&#xff0c;可以通过以下方式解决这个问题&#xff0c;这是最推荐的方法&#xff0c;因为它符合 Maven 的依赖管理方式&#xff0c;并且可以确保这些依赖在打包时…

Java SpringBoot中优雅地判断一个对象是否为空

在Java中&#xff0c;可以使用以下方法优雅地判断一个对象是否为空&#xff1a; 使用Objects.isNull()方法判断对象是否为空&#xff1a; import java.util.Objects;if (Objects.isNull(obj)) {// obj为空的处理逻辑 }使用Optional类优雅地处理可能为空的对象&#xff1a; impo…

基于 Spring Task实现单体项目架构的定时任务

文章目录 引言I JDK 实现任务调度II Spring Task实现2.1 开启Spring的计划任务支持2.2 标注方法为计划任务2.3 创建任务自己的独立线程III 预备知识: cronExpression 表达式引言 需求: 定时更新数据到redis缓存、生成定时报表。 实现方式: Timer 是 JDK 自带的定时任务工具…

Node.js知识点总结:从入门到入土

Node.js知识点总结&#xff1a;从入门到入土 node.js概念说明与相关知识储备了解基本概念&#xff1a;JavaScript基础能力&#xff1a;安装和设置Node.js环境&#xff1a;核心能力模块&#xff1a;重点能力-异步编程&#xff1a;使用npm管理依赖&#xff1a;构建Web应用&#x…

回溯大学生活

回顾一下大学四年 bg&#xff1a;湖南大学 20级计科&#xff0c;成绩60%&#xff0c;无考研考公打算 四年之前&#xff0c;怀着激动的心情来到了大学校园&#xff0c;经过了太久的压抑终于迎来了高中老师口中的美好的大学生活&#xff0c;然而呢事实并非如此。恋爱呢&#xf…

JVM将虚拟机分成了哪几块区域?

Java 8之后&#xff0c;JVM&#xff08;Java Virtual Machine&#xff09;继续沿用原有的内存区域划分&#xff0c;主要包括以下几个部分&#xff1a; 1、堆&#xff08;Heap&#xff09;&#xff1a; 用途&#xff1a;存储对象实例&#xff0c;几乎所有通过new关键字创建的对…

安全架构设计理论与实践相关知识总结

一、安全架构概述 常见信息威胁介绍&#xff1a; 1. 信息泄露&#xff1a;信息被泄露或透露给某个非授权实体 2. 破坏信息完整性&#xff1a;数据被非授权地进行增删改查货破坏而受到损失 3. 拒绝服务&#xff1a;对信息会其他资源的合法访问被无条件的组织 4. 非法使用&#x…

【数据结构】顺序表的动态分配(步骤代码详解)

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

某盾滑块拼图验证码增强版

介绍 提示&#xff1a;文章仅供交流学习&#xff0c;严禁用于非法用途&#xff0c;如有不当可联系本人删除 最近某盾新推出了&#xff0c;滑块拼图验证码&#xff0c;如下图所示&#xff0c;这篇文章介绍怎么识别滑块距离相关。 参数attrs 通过GET请求获取的参数attrs, 决…

Python 与机器学习,在服务器使用过程中,常用的 Linux 命令包括哪些?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 本博客旨在分享在实际开发过程中&#xff0c;开发者需要了解并熟练运用的 Linux 操作系统常用命令。Linux 作为一种操作系统&#xff0c;与 Windows 或 MacOS 并驾齐驱&#xff0c;尤其在服务器和开发环…

时序分解 | Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序列信号分解

时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解 目录 时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序…

Flink总结

1.Flink如何保证Exactly-Once 使用checkpoint检查点&#xff0c;其实就是 所有任务的状态&#xff0c;在某个时间点的一份快照&#xff1b;这个时间点&#xff0c;应该是所有任务都恰好处理完一个相同 的输入数据的时候。 checkpoint的步骤&#xff1a; flink应用在启动的时候…

单元测试——Junit (断言、常用注解)

单元测试 Junit单元测试框架 使用 断言测试 使用Assert.assertEquals(message, 预期值, 实际值); 这段代码是用于在测试中验证某个方法的返回值是否符合预期。其中&#xff0c;"方法内部有bug"是用于在断言失败时显示的提示信息。4是预期的返回值&#xff0c;index…

买了云服务器不会用?教你使用京东云!

1. 前言 最近出现了许多云服务器的活动&#xff0c;由于活动期间优惠的价格、极高的性价比&#xff0c;因此&#xff0c;无论是企业&#xff0c;还是私人用户&#xff1b;无论是云服务器玩的溜的老手&#xff0c;还是新手小白都直接冲了起来&#xff01;但是对于一些还未使用过…

数字未来:探索 Web3 的革命性潜力

在当今数字化的时代&#xff0c;Web3作为互联网的新兴范式正逐渐崭露头角&#xff0c;引发了广泛的关注和探讨。本文将深入探索数字未来中Web3所蕴含的革命性潜力&#xff0c;探讨其对社会、经济和技术的深远影响。 1. Web3&#xff1a;数字世界的下一个阶段 Web3是一个正在崛…

AWS入门实践-S3对象存储的基本用法

AWS S3(Simple Storage Service)是亚马逊云服务提供的一种高度可扩展、安全且经济高效的对象存储服务。它允许用户在任何位置存储和检索任意数量的数据,非常适合存储和分发静态文件、备份数据以及作为数据湖的存储层。 一、S3上传和下载文件&#xff08;AWS门户&#xff09; …