前言

当用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的。根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect),那么这两种转发方式有何区别呢?本篇在回答该问题的同时全面的讲解两种请求转发方式的原理和区别。
【关键考点】
•请求转发的含义;
•Forward转发请求的原理;
•Redirect转发请求的原理。
【考题分析】
Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。
直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。
间接转发方式(Redirect)实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。
举个通俗的例子:
直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”;
间接转发就相当于:"A找B借钱,B说没有,让A去找C借"。
下面详细阐述一下两者的原理:
一:间接请求转发(Redirect)
间接转发方式,有时也叫重定向,它一般用于避免用户的非正常访问。例如:用户在没有登录的情况下访问后台资源,Servlet可以将该HTTP请求重定向到登录页面,让用户登录以后再访问。在Servlet中,通过调用response对象的SendRedirect()方法,告诉浏览器重定向访问指定的URL,示例代码如下:
......
//Servlet中处理get请求的方法
public void doGet(HttpServletRequest request,HttpServletResponse response){
//请求重定向到另外的资源
response.sendRedirect("资源的URL");
}
........
上图所示的间接转发请求的过程如下:
1.浏览器向Servlet1发出访问请求;
2.Servlet1调用sendRedirect()方法,将浏览器重定向到Servlet2;
3.浏览器向servlet2发出请求;
4.最终由Servlet2做出响应。
二:直接请求转发(Forward)
直接转发方式用的更多一些,一般说的请求转发指的就是直接转发方式。Web应用程序大多会有一个控制器。由控制器来控制请求应该转发给那个信息资源。然后由这些信息资源处理请求,处理完以后还可能转发给另外的信息资源来返回给用户,这个过程就是经典的MVC模式。
javax.serlvet.RequestDispatcher接口是请求转发器必须实现的接口,由Web容器为Servlet提供实现该接口的对象,通过调用该接口的forward()方法到达请求转发的目的,示例代码如下:
......
//Servlet里处理get请求的方法
public void doGet(HttpServletRequest request , HttpServletResponse response){
//获取请求转发器对象,该转发器的指向通过getRequestDisPatcher()的参数设置
RequestDispatcher requestDispatcher =request.getRequestDispatcher("资源的URL");
//调用forward()方法,转发请求
requestDispatcher.forward(request,response);
}
......
上图所示的直接转发请求的过程如下:
1.浏览器向Servlet1发出访问请求;
2.Servlet1调用forward()方法,在服务器端将请求转发给Servlet2;
3.最终由Servlet2做出响应。
技巧:其实,通过浏览器就可以观察到服务器端使用了那种请求转发方式,当单击某一个超链接时,浏览器的地址栏会出现当前请求的地址,如果服务器端响应完成以后,发现地址栏的地址变了,则证明是间接的请求转发。相反,如果地址没有发生变化,则代表的是直接请求转发或者没有转发。
问:直接转发和间接转发的原理及区别是什么?
答:Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。对应到代码里,分别是RequestDispatcher类的forward()方法和HttpServletRequest类的sendRedirect()方法。
对于间接方式,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。它本质上是两次HTTP请求,对应两个request对象。
对于直接方式,客户端浏览器只发出一次请求,Servlet把请求转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求,两个信息资源共享同一个request对象。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。最后,祝大家都能找到一个称心满意的工作!
# redirect
# forward区别
# java
# forward
# Java中forward转发与redirect重定向的区别
# java 中sendredirect()和forward()方法的区别
# java中forward转发的使用
# 信息资源
# 重定向
# 两种
# 转发给
# 两次
# 去找
# 所示
# 另外一个
# 或其它
# 再向
# 上图
# 的是
# 客户端
# 称心满意
# 会有
# 多个
# 都能
# 第二个
# 会把
# 这篇文章
相关文章:
宁波自助建站系统如何快速打造专业企业网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速查询网址的建站时间与历史轨迹?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何在Golang中指定模块版本_使用go.mod控制版本号
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
建站主机是否属于云主机类型?
网站制作软件有哪些,制图软件有哪些?
浅谈Javascript中的Label语句
详解jQuery停止动画——stop()方法的使用
建站主机核心功能解析:服务器选择与网站搭建流程指南
网站专业制作公司有哪些,做一个公司网站要多少钱?
Python路径拼接规范_跨平台处理说明【指导】
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
西安专业网站制作公司有哪些,陕西省建行官方网站?
活动邀请函制作网站有哪些,活动邀请函文案?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
h5网站制作工具有哪些,h5页面制作工具有哪些?
宿州网站制作公司兴策,安徽省低保查询网站?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
网站制作企业,网站的banner和导航栏是指什么?
建站之星在线客服如何快速接入解答?
如何在服务器上配置二级域名建站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
招贴海报怎么做,什么是海报招贴?
教程网站设计制作软件,怎么创建自己的一个网站?
香港服务器如何优化才能显著提升网站加载速度?
制作宣传网站的软件,小红书可以宣传网站吗?
安徽网站建设与外贸建站服务专业定制方案
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何快速搭建高效简练网站?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
建站主机功能解析:服务器选择与快速搭建指南
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
Python文件管理规范_工程实践说明【指导】
如何高效配置香港服务器实现快速建站?
网站app免费制作软件,能免费看各大网站视频的手机app?
如何解决ASP生成WAP建站中文乱码问题?
如何通过VPS建站无需域名直接访问?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
建站之星展会模版如何一键下载生成?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在搬瓦工VPS快速搭建网站?
建站之星后台管理系统如何操作?
网站制作公司排行榜,抖音怎样做个人官方网站
如何高效利用亚马逊云主机搭建企业网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。