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

news/2024/12/23 1:44:23/

文章目录

    • 一、服务器内部转发: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.ppmy.cn/news/1404940.html

相关文章

Java项目:85 springboot智能物流管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本美发门店管理系统有管理员…

两阶段提交-mysql

二阶段提交的 prepare 阶段&#xff0c;InnoDB 主要做五件事。 第 1 件&#xff0c;把分配给事务的所有 undo 段的状态从 TRX_UNDO_ACTIVE 修改为 TRX_UNDO_PREPARED。 进入二阶段提交的事务&#xff0c;都至少改变过&#xff08;插入、更新、删除&#xff09;一个用户表的一…

InfluxDB2的数据查询示例

有用influxdb2 不支持sql&#xff0c;并且实质是个列存储数据库&#xff0c;这里基于 influxdb-client-java 和 beanutils反射&#xff0c;写了个数据查询&#xff0c;把结果以行对象的形式返回的工具类。 package com.joy.malltools.influxdb2;import com.influxdb.client.Q…

【研究】光场相机测速技术中景深方向不确定性的改进方法

本项研究详细介绍了一种基于光场相机的粒子追踪测速&#xff08;PTV&#xff09;算法&#xff0c;旨在对三维速度场的三分量进行精细化测量。算法核心在于利用相机视角的多样性&#xff0c;辅以三角化测量和粒子追踪技术&#xff0c;有效优化了光场粒子图像测速&#xff08;PIV…

【详细介绍WebKit的结构】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

解密OceanBase数据库引擎:探秘数据的深海奥秘(二)

本系列文章简介&#xff1a; 在本系列文章中&#xff0c;我们将带您踏上一次关于OceanBase数据库引擎的探秘之旅。我们将揭开其独特的设计理念&#xff0c;解读其创新的技术架构&#xff0c;深入挖掘其强大的性能优势和高可用性。同时&#xff0c;我们也将分享阿里巴巴团队在开…

嵌入式数据库-Sqlite3

阅读引言&#xff1a; 本文将会从环境sqlite3的安装、数据库的基础知识、sqlite3命令、以及sqlite的sql语句最后还有一个完整的代码实例&#xff0c; 相信仔细学习完这篇内容之后大家一定能有所收获。 目录 一、数据库的基础知识 1.数据库的基本概念 2.常用数据库 3.嵌入式…

Java设计模式详解:单例模式

设计模式详解&#xff1a;单例模式 文章目录 设计模式详解&#xff1a;单例模式一、单例模式的原理二、单例模式的实现推荐1、饿汉模式2、静态内部类 三、单例模式的案例四、单例模式的使用场景推荐总结 一、单例模式的原理 单例模式听起来很高大上&#xff0c;但其实它的核心…