请求转发与重定向的区别

重定向与请求转发的区别 重定向与请求转发的区别 一、重定向、请求转发的定义 1. 重定向(Redirect) ① 客户端浏览器向Web应用服务器端发送一个请求; ② Web服务器端使用HttpServletResponse的sendRedirect()方法将结果(结果中头信息内HTTP状态码为302,Location响应报头域中保存响应回来的地址)返回客户端浏览器; 客户端浏览器收到服务器端结果后解析其头部信息,然后自... 阅读详情

先来看一个简单的实例,客户端首先在一个页面输入数据,点击提交后,数据在另一个页面显示。
getDate.jsp

<body>
    <form action="<%=request.getContextPath() %>/test" method="post">
        用户名:<input type="text" name="userName"><br>
        密    码:<input  type="password" name="passWord"><br>
        <input type="submit" value="提交">
        <input type="reset" value="重置">
    </form>
</body>

showDate.jsp

您提交的信息为:<br>
用户名:<%=request.getParameter("userName")%><br>
密码:<%=request.getParameter("passWord") %><br>

LoginServlet.java

package cn.servlet;

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 LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //重定向代码
        //请求转发代码    
    }
}

web.xml配置

  <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>cn.servlet.LoginServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/test</url-pattern>
  </servlet-mapping>

1.如果是重定向代码
地址栏输入http://localhost:8080/Project/02/getDate.jsp

resp.sendRedirect(req.getContextPath()+"/02/showDate.jsp");

这里写图片描述
输入数据点击提交页面跳转
可见前面提交的数据并没有传递过来,
并且地址栏变为http://localhost:8080/Project/02/showDate.jsp
其实这里有个中间过程:http://localhost:8080/Project/test
这里写图片描述

2.如果是请求转发代码

String zf = "/02/showDate.jsp";
        RequestDispatcher rd = req.getRequestDispatcher(zf);
        rd.forward(req, resp);

输入数据点击提交后
这里写图片描述
可见,参数传递正常并且地址栏变为http://localhost:8080/Project/test
并没有变为http://localhost:8080/Project/02/showDate.jsp

从上面的例子中可以看出重定向涉及两次请求响应,而请求转发只涉及一次请求响应。可以这样理解:A向B要一个东西,B说东西我有但是我没时间,但我可以帮你找到C,你自己去问问C吧,所以A又自己跑去C那儿问C要,但是C有没有这个东西和B没关系,比如上面的例子中几个参数值都为null,这是重定向。另一种情况是A向B要一个东西,B说没时间,我把东西先给给C然后让C给你吧,C的东西是从B那拿到的,就如上面例子中得到的参数值,这就是所谓的请求转发。所以重定向又被称为客户端跳转,而请求转发又被称为服务端跳转。
重定向的发起者和调用者使用各自的request实例和response实例,它们各自属于独立的“请求/响应”过程请求转发的发起者和调用者共享相同的request实例和response实例,它们属于同一个“请求/响应”过程。
重定向与请求转发的其他区别:
1.请求转发只能请求转发给同一个web应用中的其他组件;而重定向还可以重定到其他站点的资源上。
2.重定向访问过程结束后浏览器地址栏的URL会发生改变;请求转发过程结束后地址栏URL地址不变。
关于两者区别也可以参考这个链接内容:
http://blog.youkuaiyun.com/getstudymessages/article/details/6230325

请求转发与重定向的区别,并介绍请求转发与重定向 ** 请求转发与重定向的区别,并介绍请求转发与重定向 ** 一.请求转发与重定向的区别 1) 重定向对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求,这个过程好比有个叫“浏览器”的人写信找张三借钱,张三回信说没有钱,让“浏览器”去找李四借,并将李四现在的通信地址告诉给了“浏览器”。于是,“浏览器”又按张三提供通信地址给李四写信借钱,李四收到信后就把钱汇给了“浏览器”。 由此可见,重定向的时候,“浏览器”一共发出了两封信和收到了两次回复,“浏览器”也知道他借到的钱出自 阅读详情

相关推荐

web实验一.1-- servlet请求转发、请求转发与重定向区别

1. 简单的综合应用,掌握Servlet将请求转发给另一个Servlet的方法。 【步骤1】创建一个名为input.html的HTML页面,其中包括一个表单,表单中包含两个文本域,分别供用户输入学号和姓名,该页面也包含提交和重置按钮。 【步骤2】 定义一个名为com.demo.Student类,其中包括学号sno和姓名name两个private的成员变量,定义访问和修改sno和name的方法。

Mj_yong的博客 2787

请求转发和请求重定向有什么区别?

请求转发(Forward)发生在服务端程序内部,当服务器端收到一个客户端的请求之后,会先将请求,转发给目标地址,再将目标地址返回的结果转发给客户端。而客户端对于这一切毫无感知的,这就好比,张三(客户端)找李四(服务器端)借钱,而李四没钱,于是李四又去王五那借钱,并把钱借给了张三,整个过程中张三只借了一次款,剩下的事情都是李四完成的,这就是请求转发。**请求重定向(Redirect)...

开源世界 1万+

深入解析请求转发与重定向的核心区别

请求转发是一种由服务器端发起的跳转机制,它允许一个Servlet或JSP将当前的请求对象()和响应对象()传递给另一个资源(如另一个Servlet、JSP或HTML页面)来继续处理。整个过程对客户端是透明的,浏览器地址栏显示的URL仍然是最初的请求地址。与重定向不同,请求转发不向客户端发送新的HTTP响应,而是由服务器内部直接调用目标资源。这意味着请求对象中的属性、参数等信息在转发过程中得以保留,从而实现了页面之间的数据共享。

weixin_35754676的博客 807

请求转发与重定向

一、请求转发和重定向 1)请求转发 关键词 request 语法:request.getRequestDispatcher(URL地址).forward(request, response) 2)重定向 关键词 request 语法:response.sendRedirect(URL地址) 二.请求转发代码实例 login.jsp(这是我们模拟的登陆界面) <%@ page contentType="text/html;charset=UTF-8" language="java" %&gt

m0_51709303的博客 3370

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 959

【医学影像】超声(UltraSound)影像的增强与目标检测

文章目录1 综述1.1 超声发展简史1.2 超声类型2 超声影像的去噪与增强2.1 各向异性扩散去噪模型2.2 色彩恢复的视网膜增强算法SSR和MSR2.3 MSRCR增强算法(基于MSR算法改进版)2.4 参考文献3 超声影像的目标识别3.1 基于跨模态数据迁移进行DL训练3.2 参考文献 1 综述 因工作需要,最近调研了超声(UltraSound)影像的相关知识,包含超声类型、超声影像的去噪和增强,目标检测等,并对相关资料文献进行梳理整合。 本人另外一篇博文主要讲了UltraSound 影像与CT/MR

muyijames的博客 1万+

转发和重定向的区别

1. 重定向与转发的区别: 1.重定向访问服务器两次,转发只访问服务器一次。 2.转发页面的URL不会改变,而重定向地址会改变 3.转发只能转发到自己的web应用内,重定向可以重定义到任意资源路径。 4.转发相当于服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页 共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()和 request.getAttribute()。而

weixin_51270766的博客 3万+

关于示波器测485串口波特率的使用方法总结

之前没有用过示波器,更不知道怎么来测试串口的波特率,结果遇到一客户说我们产品的波特率达不到9600,只有9100,为了验证这一说法,我们只能自己测试一下。说明:产品通过485接电脑,用串口调试助手接收都是没有问题的,用客户的设备接收就有问题。 下面说一下示波器测波特率的方法步骤: 显示高低跳变的情况: 1.先把示波器表笔的地线(夹子)夹485B,表笔夹485A。 2.往串口发送数据:如发送

lianxue1986的专栏 3万+

请求的转发

请求转发是指,服务器收到请求后,从一个服务器资源跳转到另一个服务器资源的操作叫做请求转发。 这里我们创建两个Servlet。 这里要注意,我们把前端页面放到WEB-INF下面是不能访问的,我们可以利用请求转发来访问 还有一个就是,请求转发只能访问工程内的资源,不能访问工程外的资源。我们可以试一下请求转发到百度。你给的地址,它是给到当前工程下去访问了,它不允许我们出站,请求转发只能在自己工程进行跳转。...

while(true){ study } 2971

用Pixhawk 2.4.8和PX4 1.13,从零搭建你的第一支无人机编队(附避坑清单)

本文详细介绍了如何使用Pixhawk 2.4.8飞控和PX4 1.13固件从零搭建低成本无人机编队系统。涵盖硬件选型、固件配置、多机通信和编队飞行逻辑开发的全流程,特别针对学生和爱好者提供实战验证的避坑方案,帮助实现多机协同飞行。

weixin_27219587的博客 403

深度强化学习:Actor-Critic、A2C、A3C

Actor-Critic算法是强化学习中常用的一种方法,policy-based,通过演员和评论员或者是策略网络和价值网络的结合进行学习

weixin_51995147的博客 1428

请求转发与请求重定向的区别

请求转发: 请求转发,即request.getRequestDispatcher().forward(),是一种服务器的行为,客户端只有一次请求,服务器端转发后会将请求对象保存,地址栏中的URL地址不会改变,得到响应后服务器端再将响应发给客户端; 请求重定向: 请求重定向,即response.sendRedirect(),是一种客户端行文,从本质上讲等同于两次请求,前一次请求对象不会保存,地

Valineliu 5万+

移动端UI自动化测试新框架Maestro:声明式语法与实战指南

UI自动化测试是保障移动应用质量的关键环节,其核心原理是通过脚本模拟用户操作,对应用界面进行自动验证。传统命令式框架(如基于Selenium WebDriver的Appium)虽然控制粒度细,但脚本编写和维护成本较高。声明式测试框架则通过描述“做什么”而非“怎么做”,显著降低了技术门槛和维护复杂度,其技术价值在于提升测试脚本的可读性、编写效率与跨团队协作能力。在移动端测试领域,这尤其适用于需要快速验证核心业务流程、进行冒烟测试和回归测试的场景。本文聚焦的**Maestro框架**,正是这一理念的杰出实践。它

weixin_32921023的博客 713

请求转发与重定向的区别:

请求转发与重定向的区别: 请求重定向与请求转发的比较,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有很大的区别。 1.RequestDispatcher.forward方法只能将请求转发给同一个Web应用中的组件,HttpServletRespons

3421

功能安全Safety Case构建方法论

本文系统阐述了功能安全认证中SafetyCase的构建方法。SafetyCase是一套结构化论证体系,通过Claim-Argument-Evidence(CAE)逻辑链证明系统安全性,包含系统级、技术安全级和实现级三层论证。文章详细介绍了SafetyCase的核心框架、与FMEDA等验证方法的关系、工程化实施步骤,以及常见失效模式。特别强调SafetyCase连接理论、实现与证据的桥梁作用,是功能安全认证的灵魂文件,要求将分散的安全活动组织成完整的逻辑论证。

VehSwHwDeveloper的博客 578

LVGL在单色屏上运行

本文主要讲述LVGL在单色屏应用中的实现思路,并已验证通过。网上关于lvgl移植的文章有很多了,本文不加以赘述。

weixin_43278295的博客 4464

什么是重定向?重定向与请求转发的区别?

机制本质地址栏数据传递性能重定向客户端跳转(二次请求)变化需手动处理较低请求转发服务端跳转(内部调度)不变自动共享请求域数据较高选择策略需要 SEO 友好的新 URL → 301 重定向多步骤表单共享数据 → 请求转发支付后防止刷新重复扣款 → 302/307 重定向。

tschen的博客 1636

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

HTTP中请求转发与重定向的区别

在servlet中,请求转发到yyServlet的语句为: request.getRequestDispatcher(“yyservlet”).forward(request, response); 而重定向的语句为: response.sendRedirect(“yyservlet”);如果客户端请求的是xxServlet,而xxServlet请求转发到yyServlet与xxServlet

南瓜灯cc 2467

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

请求转发与重定向到底有哪些区别?

重定向与请求转发。但可能有很多同学并不知道这两种跳转在细节上的区别,只知道都能跳转到目标页面。但实际上这两种跳转方式深入研究后,你会发现有很多不同之处。接下来,壹哥就给大家梳理一下这两种跳转方式的具体区别。二. 两者的各自特点两种跳转最大的区别在于,重定向是两次请求,每次都是从客户端发起;而请求转发是一次请求,是服务器发起的转发。如下图所示:给大家举一个生活中的案例:重定向我要找凤姐办事,凤姐说她完成不了,刘亦菲可以完成这件事,让我去找刘亦菲办事。

一一哥 4505

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

请求转发和重定向的区别与路径问题

请求转发和重定向的区别 1.请求转发是在服务器内部的跳转,整个过程中只有1个请求,重定向是在客户端的跳转,产生了新请求 2.请求转发后,地址栏上的url不变,可以继续使用request中的数据,而重定向后,url会改变,就不能使用原request中的数据 3.请求转发只能跳转到服务内部的资源,重定向可以访问服务器外部的资源 请求转发和重定向时的路径问题 转发或重定向时路径上带”/”和不带”/”的区...

张子又 2444

详述重定向与请求转发两种方式区别区别

目录 重定向(Redirect) 请求转发(Forward) 区别 重定向(Redirect) 重定向(Redirect):客户端浏览器向Web应用服务器端发送一个请求,Web服务器端使用HttpServletResponse的sendRedirect()方法将结果(结果中头信息内HTTP状态码为302,Location响应报头域中保存响应回来的地址)返回客户端浏览器;客户端浏览器收到服务器端结果后解析其头部信息,然后自动按照头部指定地址以GET方式再次向Web应用服务器端发请求,此时地址栏URL

m0_46383618的博客 569

请求转发与重定向区别

重定向(Redirect): 客户端浏览器向Web应用服务器端发送一个请求,Web服务器端使用HttpServletResponse的sendRedirect()方法将结果(结果中头信息内HTTP状态码为302,Location响应报头域中保存响应回来的地址)返回客户端浏览器;客户端浏览器收到服务器端结果后解析其头部信息,然后自动按照头部指定地址以GET方式再次向Web应用服务器端发请求,此时地址栏URL发生变化,服务器端接收到新的请求再将结果返回至客户端浏览器,客户端浏览器解释执行返回结果并将执行结果显

Gong_Zheng6的博客 3415
上一篇: Java设计模式之工厂模式
下一篇: 基于JSP + servlet + javabean的MVC简单验证登录实例
詹詹自喜KING
博客等级 码龄11年 40粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值