java转发和重定向的区别

重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。

怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择转发。

转发和重定向的区别

不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。

重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。

(0)

相关推荐

  • JavaEE通过response实现请求重定向

    请求重定向指的是一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,这称之为请求重定向.302状态码和location头即可实现重定向. 请求重定向最常见的应用场景就是用户登录. 下面的示例代码从另一个页面重定向到用户登录页面: 复制代码 代码如下: package com.yyz.response;  import java.io.IOException;  import javax.servlet.ServletException;  import javax.servlet

  • java用重定向方法从文件中读入或写入数据

    用重定向方法从文件中读入或写入数据 1.问题描述 先产生10000个随机数,每十个一行,放入文件中.(用重定向方法)    用重定向方法,从文件中读入10000个数字,打印出前十名.(不许调用排序方法) 2.程序如下: 2.1 写入 import java.util.Scanner; import java.util.List; import java.util.ArrayList; public class A{ static void to_txt(){ for(int i=1;i<=100

  • Java中重定向输出流实现用文件记录程序日志

    System中的out,error都是final类型的,不能做改动.但通过setOut()可以设置新的输出流,从而实现写日志的功能. import java.io.PrintStream; import java.io.FileNotFoundException; public class RedirectOutputStream { public static void main(String arg[]){ try{ PrintStream out = System.out; //保留原输出

  • java实现301跳转和重定向的方法

    java301跳转和重定向 复制代码 代码如下: response.setStatus(301); response.setHeader("Location","http://www.baidu.com"); //---分割线--- response.sendRedirect("http://baidu.com"); 以上就是本文的全部内容了,希望大家能够喜欢.

  • java 转发和重定向区别及实例代码

    java中转发和重定向 转发: request.getRequestDispatcher("success.jsp").forward(request,response); 在服务器组件收到用户请求后.经过它的处理后有传递给了另一个组件.不修改用户的请求码.各组件处理完之后在返回给用户,例如主页面的框架. 用户请求----->服务器------->组件1------->组件2------->服务器------->用户 (请求不变) 重定向: respons

  • java转发和重定向的区别

    重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变.重定向的速度比转发慢,因为浏览器还得发出一个新的请求.同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用. 怎么选择是重定向还是转发

  • 简单谈谈SpringMVC转发和重定向的区别

    在servlet中,转发和重定向是由request和response完成的.两者之间的区别请看我之前的文章.那么在springMVC中是如何完成的呢? /**转发**/ @RequestMapping("/login.do") public String login(HttpServletRequest request,HttpServletResponse response){ request.setAttribute("message", "hello

  • SpringMVC中转发与重定向的区别浅析

    转发和重定向 相同点 都是web开发中资源跳转的方式. 不同点 转发:是服务器内部的跳转,浏览器的地址栏不会发生变化.从一个页面到另一个页面的跳转还是同一个请求,也即是只有一个请求响应.可以通过request域来传递对象. 重定向:是浏览器自动发起对跳转目标的请求,浏览器的地址栏会发生变化.从一个页面到另一个页面的跳转是不同的请求,也即是有两个或两个以上的不同的请求的响应.无法通过request域来传递对象. 在SpringMVC中实现转发和重定向 (1)在SpringMVC中仍然以传统方式进行

  • 网站技巧之转发与重定向的区别

    重定向过程:客户浏览器发送http请求---->web服务器接受后发送302响应要求客户浏览器发送一个新的http请求---->客户端浏览器接受此响应后在发送一个新的http请求到服务器---->服务器根据此请求寻找资源并发送给客户,它可以重定向到任意URL,不能共享request范围内的数据. 转发过程:客户浏览器发送http请求---->web服务器接受此请求后调用内部的一个方法在容器内部完成请求处理和转发动作---->将目标资源发送给客户,它只能在同一个web应用中使用

  • JSP转发和重定向的区别分析

    好长时间不看,又把基础只是给忘了.今天好好的再看看.呵呵呵......温故而知新啊!!! 1.RequestDispatcher.forward()――转发    是在服务器端起作用,当使用forward()时, Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的 form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动

  • Java Servlet请求重定向的方法

    HttpServletResponse接口的sendRedirect()方法可用于将响应重定向到另一个资源,它可以是Servlet,Jsp或Html文件. 它接受相对和绝对URL. 它在客户端起作用,因为它使用浏览器的网址栏发出另一个请求.因此,它可以在服务器内部和外部工作. 1 转发和重定向的区别 RequestDispatcher的forward()方法与HttpServletResponse接口的sendRedirect()方法之间有很多区别.具体区别如下: forward()方法 sen

  • JavaWeb中请求转发和请求重定向的区别以及使用

    什么是请求转发? 请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作. 请求转发的特点 1.浏览器地址栏不会发生变化 2.他们一次请求,服务器完成转发操作 3.共享Request域中的数据 4.可以转发到WEB-INF目录下 5.不可以访问工程以外的资源 举个例子: 1.一个公司有多个部门,其中部门1(Servlet1)向客户提供了自己能够提供的服务,但是还有一部分服务自己提供不了,需要其他部门的服务: 2.所以部门1(Servlet1)将客户的文件盖一个章,证明部门1已经提供了服

  • 一文彻底吃透SpringMVC中的转发和重定向

    目录 项目案例(共用资源) 1.请求转发到其他页面 2.请求转发到其他控制器 3.返回 String 时的请求转发 4.返回 void 时的请求转发 5.请求重定向到其他页面 [1]通过 ModelAndView 中的 Model 携带参数 [2]使用 HttpSession 携带参数 6.请求重定向到其他控制器 [1]通过 ModelAndView 的 Model 携带参数 [2]使用 HttpSession 携带参数 7.返回 String 时的重定向 8.返回 void 时的重定向 总结

  • 详解Java中“==”与equals()的区别

    Java中"=="与equals()的区别 对于关系操作符"==",<Java编程思想>中是这样描述的:"关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系".这里的操作数的"值"值得我们注意.对于8种基本数据类型(boolean,byte,char,short,int,float,double,long),它们的变量直接存储的就是"值".所以,我们用"==&q

随机推荐