forward(请求转发)和redirect(重定向)的区别

原理:

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取

所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。

调用方法:

Servlet中

request.getRequestDispatcher("new.jsp").forward(request,
response);//转发到new.jsp

response.sendRedirect("new.jsp");//重定向到new.jsp
JSP中

<jsp:forward page="apage.jsp"
/>

<%response.sendRedirect("new.jsp");//重定向到new.jsp%>

时间: 2024-11-13 06:54:02

forward(请求转发)和redirect(重定向)的区别的相关文章

Forword(请求转发)与Redirect(重定向)区别

1.从数据共享上 Forword是一个请求的延续,可以共享request的数据 Redirect开启一个新的请求,不可以共享request的数据 2.从地址栏 Forword转发地址栏不发生变化 Redirect转发地址栏发生变化 原文地址:https://www.cnblogs.com/xiaohouye/p/11151330.html

请求转发 和 URL 重定向

五 请求转发 和 URL 重定向 1 请求转发和重定向 干什么用? 是我们在java后台servlet中 由一个servlet跳转到 另一个 servlet/jsp 要使用的技术 前端发送请求到后台 : A 浏览器地址栏输入链接 B a标签 <a href="url地址">跳转</a> C form表单 <form action="url地址" method="get/post"> <input type

URL转发和301重定向的区别

URL转发和301重定向区别是什么?URL转发和301重定向对于搜索引擎和权重转移都一样吗?下面我们一起来分析下: 一.从用户体验角度分析 在用户角度上,URL转发和301重定向完全是一样的,没有任何区别. 二.从操作使用URL转发和301重定向角度分析 URL转发操作起来更加容易,而301重定向在IIS服务器上相对比较麻烦,而且虚拟主机用户无法操作,apache服务器也比较容易实现. 三.从搜索引擎爬行和权重转移角度分析 URL转发没有权重转移,所以对于权重转移的站点没有任何帮助,如果你的站点

servlet的同步请求异步请求以及请求转发与重定型的区别

在javaWeb阶段,前端页面发送请求有两种: 1.同步请求 2.异步请求 同步请求与异步请求的区别是:同步请求跳转界面,异步请求只传递数据,不会跳转界面 (即使用同步请求,servelt响应的是一个界面,前台需要加载这个新的界面的图片样式脚本等诸多资源,而是用异步请求的话,只传递数据,不会刷新资源) 做一个简单的案例: 1.新建一个页面login.jsp <%@ page contentType="text/html;charset=UTF-8" language="

请求转发与响应重定向

转发在服务器端完成的:重定向是在客户端完成的 转发的速度快:重定向速度慢 转发的是同一次请求:重定向是两次不同请求 转发不会执行转发后的代码:重定向会执行重定向之后的代码 转发地址栏没有变化:重定向地址栏有变化 转发必须是在同一台服务器下完成:重定向可以在不同的服务器下完成 如果不理解请看下面: 请求--转发 地址不变,数据存在请求中 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther

javaWeb中request请求转发和response重定向

1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL. 2.request.get Forward代码中的"/uu"则代表相对与WEB应用的路径. 举例: Servlet 和 目标文件的包路径: Servlet  代码:中 doPost 和doGet代码: request 重定向url地址 或者是是相对于 本项目 (WEB13)  http:localhost:8080/WEB13+url     

直接请求转发(Forward)和间接请求转发(Redirect)两种区别?

用户向服务器发送了一次HTTP请求,该请求肯能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的.根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect)两种有何区别呢?本篇在回答该问题的同时全面的讲解两种请求转发方式的原理和区别. [关键考点] 请求转发的含义: Forward转发请求的原理: Redirect转发请求的原理. [考题分析] Forward和Redirect代表了两种请求转发方式:

请求转发、包含、重定向 getAttribute 和 setAttribute POST和GET编码

 一.请求转发  请求包含  请求重定向 Demo5.java   注意:doPost()方法中别忘写doGet(request, response); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCo

Servlet技术-请求转发,重定向和包含的关系

Web组件之间的关系包含3种,请求转发,URL重定向和包含 1.请求转发 请求转发允许把请求转发给同一应用程序的其他web组件,这种技术通常用于Web应用控制层的Servlet流程控制器,可检查HTTP请求的数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理操作并生成响应结果. 实例: 如果当前的Servlet组件要把请求转发给一个jsp组件,如hello.jsp,可在Servlet中的service方法中执行一下代码: RequestDispatcher rd=request.ge

request实现请求转发

ServletContext可以实现请求转发,request也可以. 在forward之前输入到response缓冲区中的数据,如果已经被发送到了客户端,forward将失败,抛出异常 在forward之前输入到response缓冲区中的数据,但是还没有发送到客户端,forward可以执行,但是缓冲区将被清空 ,之前的数据丢失.注意丢失的只是请求体中的内容,头内容仍然有效. 在一个Servlet中进行多次forward也是不行的,因为第一次forward结束,response已经被提交了,没有机