请求转发与重定向的区别和执行流程

请求转发与重定向的区别和执行流程

文章目录

  • 请求转发与重定向的区别和执行流程
    • 1 请求转发与重定向区别
    • 2 现实生活的例子
      • 2.1 重定向
      • 2.2 请求转发
    • 3 重定向-流程图、代码、结果
      • 3.1 流程图
      • 3.2 代码BoyServlet
      • 3.3 代码GirlServlet
      • 3.4 web.xml文件
      • 3.5 结果
    • 4 请求转发-流程图、代码、结果
      • 4.1 请求转发-流程图
      • 4.2 代码BoyServlet
      • 4.3 代码GirlServlet
      • 4.4 web.xml文件
      • 4.5 结果

本文通过现实生活的例子引出重定向和请求转发,通过图解的方式讲解了整执行流程,希望可以帮助到大家

1 请求转发与重定向区别

序号问题重定向请求转发
1第二次请求谁请求的?浏览器服务器
2浏览器发送了几次请求?2次以上1次
3servlet可以共享request吗?不可以可以
4地址栏是否发生改变?不是
5浏览器地址栏显示的哪一次访问地址?最后一次第一次
6可以跳转到什么资源?任意资源项目内部
7第二次的请求路径是?绝对路径内部路径

2 现实生活的例子

2.1 重定向

在这里插入图片描述
①:A对B说,帮忙拿下快递
②:B对A说,没有空,你找下C吧
③:A对C说,帮忙拿下快递
④:C然后拿了快递给A

2.2 请求转发

在这里插入图片描述
①:A对B说,帮忙拿下快递
②:第二步,B没有空,直接找让C帮A拿下快递
③:C拿到了快递并返回给A


3 重定向-流程图、代码、结果

3.1 流程图

在这里插入图片描述

3.2 代码BoyServlet

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class BoyServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取请求携带的idString id = request.getParameter("id");System.out.println("A对B说:帮我拿下快递,id号是:" + id);System.out.println("B对A说:我没有空,你找下C");System.out.println("----分割线----");// 重定向方式1:response.setStatus(302);response.setHeader("location", "/redirect/girl");// 重定向方式2:(正常用此方法)// response.sendRedirect("/redirect/girl");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}

3.3 代码GirlServlet

import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class GirlServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//设置浏览器解析的格式,否则浏览器会出现乱码response.setContentType("text/html;charset=utf-8");//获取请求携带的idString id = request.getParameter("id");System.out.println("A对C说,帮我拿下快递,id号是:"+id);System.out.println("拿到快递了");//获取输出流PrintWriter writer = response.getWriter();//将信息返回给浏览器writer.println("拿到快递了");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}

3.4 web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>redirect</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><description></description><display-name>BoyServlet</display-name><servlet-name>BoyServlet</servlet-name><servlet-class>com.redirect.BoyServlet</servlet-class></servlet><servlet-mapping><servlet-name>BoyServlet</servlet-name><url-pattern>/boy</url-pattern></servlet-mapping><servlet><description></description><display-name>GirlServlet</display-name><servlet-name>GirlServlet</servlet-name><servlet-class>com.redirect.GirlServlet</servlet-class></servlet><servlet-mapping><servlet-name>GirlServlet</servlet-name><url-pattern>/girl</url-pattern></servlet-mapping>
</web-app>

3.5 结果

浏览器输入
在这里插入图片描述

浏览器返回结果
在这里插入图片描述

控制台打印结果
这里写图片描述


4 请求转发-流程图、代码、结果

4.1 请求转发-流程图

在这里插入图片描述

4.2 代码BoyServlet

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class BoyServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取请求携带的idString id = request.getParameter("id");System.out.println("A对B说:帮我拿下快递,id号是:" + id);System.out.println("B对A说:好的");System.out.println("----分割线----");//---后面B直接在服务器将请求转发给C---//获取转发对象,后面括号指定了转发的路径RequestDispatcher dispatcher = request.getRequestDispatcher("/girl");//执行转发功能,并将请求和响应一并转发过去dispatcher.forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}

4.3 代码GirlServlet

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class GirlServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 设置浏览器解析的格式,否则浏览器会出现乱码response.setContentType("text/html;charset=utf-8");// 获取请求携带的idString id = request.getParameter("id");System.out.println("B对C说:帮A拿下快递,id号是:" + id);System.out.println("拿到快递了");// 获取输出流PrintWriter writer = response.getWriter();// 将信息返回给浏览器writer.println("拿到快递了");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}

4.4 web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>dispatcher</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><description></description><display-name>BoyServlet</display-name><servlet-name>BoyServlet</servlet-name><servlet-class>com.dispatcher.BoyServlet</servlet-class></servlet><servlet-mapping><servlet-name>BoyServlet</servlet-name><url-pattern>/boy</url-pattern></servlet-mapping><servlet><description></description><display-name>GirlServlet</display-name><servlet-name>GirlServlet</servlet-name><servlet-class>com.dispatcher.GirlServlet</servlet-class></servlet><servlet-mapping><servlet-name>GirlServlet</servlet-name><url-pattern>/girl</url-pattern></servlet-mapping>
</web-app>

4.5 结果

浏览器输入
在这里插入图片描述

浏览器返回结果
在这里插入图片描述

控制台结果
在这里插入图片描述

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

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

相关文章

牛津大学最新调研:AI面临基准危机,NLP集中“攻关”推理测试

来源&#xff1a;AI科技评论作者:维克多人工智能&#xff08;AI&#xff09;基准为模型提供了衡量和比较的路径&#xff0c;超越基准&#xff0c;达到SOTA&#xff0c;经常成为顶会论文的标配。同时&#xff0c;有些基准确实推动了AI的发展&#xff0c;例如ImageNet 基准测试对…

Postman使用小教程--基础入门篇

文章目录1 Postman介绍2 postman基础功能介绍2.1 postman基础页面2.2 postman基础页面介绍2.2 接口测试流程和原理2.3 请求区域介绍3 导出和导入接口集3.1 导出3.2 导入4 设置环境变量4.1 环境变量优先级4.2 新建环境变量4.3 将返回值的某个数据设置为环境变量4.4 将其他的常用…

W玻色子质量实验与理论矛盾,或是十年来最重要的进展

来源&#xff1a;科学大院就在昨天&#xff0c;美国费米实验室的CDF项目在《Science》上发了篇文章&#xff0c;W玻色子质量的测量结果和标准模型预测的结果有明显差距。消息一出&#xff0c;粒子物理界炸了窝。因为这或许是十年来最重要的粒子物理进展&#xff01;这个结果意味…

Git理论教程

文章目录1 什么是Git1.1 什么是版本控制系统1.2 为什么需要版本控制系统1.3 常见的版本控制工具1.4 版本控制分类1.4.1 集中版本控制 SVN1.4.2 分布式版本控制 Git1.4.3 Git与SVN的主要区别2 Git环境配置3 Git基本理论3.1 Git三个区域3.2 Git工作流程3.3 Git项目搭建3.3.1 本地…

Science | 再创生命奇迹!日本科学家造出了不需要“父亲”的大鼠及小鼠

来源&#xff1a;【iNature】iNature从多能干细胞 (PSC) 体外生成生殖细胞可以对未来的生殖医学和动物育种产生重大影响。十年前&#xff0c;在小鼠中建立了体外配子发生。然而&#xff0c;在任何其他物种中尚未实现诱导原始生殖细胞样细胞&#xff08;PGCLCs&#xff09;产生配…

总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程

总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程 文章目录总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程1 vue中index.html、main.js、App.vue、index.js关系简介1.1 项目的运行入口index.html1.2 入口文件main.j…

ACM 杰出会员姬水旺:量子化学和物理的深度学习

整理&#xff1a;汪浩文校对&#xff1a;维克多量子技术和人工智能都是当前最先进的科学技术&#xff0c;前者被寄希望于拥有超强的计算能力&#xff0c;后者已经在各行各业“大杀四方”。当两者相遇会碰撞出什么样的火花&#xff1f;人工智能又能在哪些方面助力量子技术&#…

1 操作系统第一章 操作系统概念、功能、四大特征、操作系统发展与分类

文章目录1.1 操作系统概念1.2 操作系统功能1.3 操作系统四大特征1.3.1 并发1.3.2 共享1.3.3 并发性和共享区别及对应关系&#xff1a;1.3.4 虚拟1.3.5 异步1.4 操作系统的发展与分类1.4.1 手工操作阶段1.4.2 批处理阶段——单道批处理系统1.4.3 批处理阶段——多道批处理系统1.…

不能头脑一热,就布局颠覆性技术、上马未来产业

来源&#xff1a;财经国家周刊作者&#xff1a;曹方 何颖 姬少宇 张鹏近年来&#xff0c;布局、规划及培育人工智能与机器人、先进材料、新能源、生命科学、云计算和量子计算、混合现实等颠覆性技术、未来产业&#xff0c;成为不少地方政府推动当地产业结构调整、助力经济高质量…

2 操作系统第一章 操作系统体系结构、中断和异常、系统调用

文章目录1.1 指令概念及其分类1.2 操作系统体系结构&#xff1a;1.2.1操作系统内核概念1.3 中断和异常1.3.1 中断的诞生1.3.2 中断分类1.3.3 外中断的处理过程1.3.4 中断小结1.4 系统调用1.4.1 系统调用介绍1.4.2 系统调用功能1.4.3 系统调用小结1.1 指令概念及其分类 指令就是…

百年诺奖的那些争议与放弃

来源&#xff1a;数学与通识自1901年首届诺贝尔奖颁发以来&#xff0c;它已成为人们心中最崇高、最向往的奖项之一。可能没有人想要去拒绝它&#xff0c;因为它不仅仅是奖金的问题&#xff0c;还是莫大的荣誉和骄傲&#xff0c;其追求真理、造福社会、为人类文明创造价值的初心…

3 操作系统第二章 进程管理 进程定义、特征、组织、状态与转换

文章目录1 进程的定义和特征2 进程的组织3 进程的状态与转换3.1 进程的状态3.2 进程状态转换1 进程的定义和特征 引入进程的原因 为了使程序能够并发执行&#xff0c;并且可以对并发执行的程序加以描述和控制 进程定义 进程是进程实体的运行过程&#xff0c;是系统进行资源分配…

数学家、中科院院士张景中:数学实力影响国家实力是近代以来的共识

本文转自&#xff1a;长江日报-长江网转载自公众号 和乐数学长江日报-长江网讯(记者周劼)最近一段时间&#xff0c;关于“数学”的热点新闻接连不断&#xff0c;从华为爆料有700名数学家&#xff0c;到中国重夺国际奥数冠军&#xff0c;从丘成桐区别数学家和数学工程师&#xf…

4 操作系统第二章 进程管理 进程控制、通信

文章目录1 进程控制1.1 进程控制1.2 进程控制实现1.3 进程创建1.4 进程终止1.5 进程阻塞与唤醒1.6 进程切换1.7 进程控制小结2 进程通信2.1 共享通信2.2 管道通信2.3 消息传递2.4 进程通信小结1 进程控制 1.1 进程控制 进程控制的主要功能是对系统中的所有进程实施有效的管理&…

《Science》日本科学家利用干细胞诱导成功了大鼠生殖细胞

来源&#xff1a;生物通日本科学家利用干细胞来诱导生殖细胞&#xff0c;从而产生健康且可生育的后代。不久前&#xff0c;日本京都大学(Kyoto University)的研究人员在《细胞干细胞》(Cell Stem Cell)杂志上发表了一篇研究论文&#xff0c;称他们利用小鼠多能干细胞在试管中逐…

5 操作系统第二章 进程管理 线程介绍

文章目录1 什么是线程1.1 为什么要引入线程&#xff1a;1.2 线程定义1.3 线程与进程的比较1.4 线程的属性1.5 线程实现方式1.5.1 用户级线程&#xff08;ULT&#xff09;1.5.2 内核级线程&#xff08;KLT,又称“内核支持的线程”&#xff09;1.5.2 用户级线程、内核级线程二者组…

6 操作系统第二章 进程管理 处理机调度

文章目录1 处理机调度1.1 处理机调度概念1.2 处理机调度三大层次1.3 处理机三层调度的联系、对比1.4 处理机调度小结2 进程调度2.1 进程调度、进程切换时机2.2 进程调度方式2.3 进程的切换与过程2.4 进程切换与调度小结3 典型的调度算法3.1 先来先服务 FCFS3.2 短作业优先 SJF3…

如何通向“广义人工智能”?LSTM 提出者之一Sepp Hochreiter:将符号 AI 与神经 AI 相结合...

来源&#xff1a;AI科技评论作者&#xff1a;Sepp Hochreiter解读&#xff1a;Antonio编辑&#xff1a;陈彩娴人类包含意识、认知、决策等等在内的智慧能力&#xff0c;似乎从人类有记录的那一刻起&#xff0c;就吸引着无数哲学家的思索。与之类似&#xff0c;从AI诞生的那一刻…

德勤预判:2022技术七大趋势

来源&#xff1a;综合德勤公开平台公开发布信息整理编辑&#xff1a;邱峰、罗兵&#xff0c;张钦煜审核&#xff1a;张祥、吴斌、数字理政研究院、中通协大数据分会1、数据跨界共享更便捷&#xff1a;诸多新技术致力于在保护隐私的同时&#xff0c;简化组织内和组织间的数据共享…

7 操作系统第二章 进程管理 进程同步与互斥

文章目录1 进程同步与互斥1.1 进程同步1.2 进程互斥1.3 进程同步机制遵循的原则1.3 进程同步、互斥小结2 进程互斥实现方法2.1 互斥的软件实现方法2.1.1 单标志法2.1.2 双标志法先检查2.1.3 双标志法后检查2.1.4 Peterson算法2.1.5 互斥的软件实现方法小结2.2 互斥的硬件实现方…