`

jsp 中重定向和转发的区别

 
阅读更多
转发:
1.RequestDispatcher rd = new RequestDispatcher();   
rd.forward(request, response)   
2.<jsp:forword>

重定向:
1.HttpServletResponse response = new HttpServletResponse();   
response.sendRedirect(location)  

2.response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String   newLocn   =   "/newpath/jsa.jsp "; 
response.setHeader( "Location ",newLocn); 

3.Meta本身就是HTML标签。使用方法是 <meta   http-equiv= "refresh "  content= "5;   url=http://www.dreamdu.com/ "   /> 
相应的java代码 
String   content=stayTime+ ";URL= "+URL; 
response.setHeader( "REFRESH ",content);


1、 Forward
这种方式是在服务器端作的重定向。服务器往client 发送数据的过程是这样的:服务器在向客户端发送数据之前,是先将数据输出到缓冲区,然后将缓冲区中数据发送给client端。什么时候将缓冲区里的数据发送给client端呢?(1)当对来自client的request处理完,并把所有数据输出到缓冲区,(2)当缓冲区满,(3)在程序中调用缓冲区的输出方法out.flush()或response.flushbuffer(),web container才将缓冲区中的数据发送给client。
这种重定向方式是利用服务器端的缓冲区机制,在把缓冲区的数据发送到客户端之前,原来的数据不发送,将执行转向重定向页面,发送重定向页面的数据,重定向调用页的数据将被清除。特别提示:在<JSP:FORWORD>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么这种重定向方式将不起作用。
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
response.setContentType(”text/html; charset=UTF-8″);
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher(”/index.jsp”);
rd.forward(request, response);
}
2、 sendRedirect
这种方式是在客户端作的重定向处理。该方法通过修改HTTP协议的HEADER部分(设置状态代码302,命令浏览器发重新发送请求),对浏览器下达重定向指令的,让浏览器对在location中指定的URL提出请求,使浏览器显示重定向网页的内容。该方法可以接受绝对的或相对的URLs。如果传递到该方法的参数是一个相对的URL,那么Web container在将它发送到客户端前会把它转换成一个绝对的URL。public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
response.setContentType(”text/html; charset=UTF-8″);
//response.sendRedirect(”/index.jsp”); 效果和前面forward一样
response.sendRedirect(”http://www.sohu.com”); //跳转到sohu
}

 

 

区别:

1、forward重定向是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变,而sendRedirect方法可以重定向到任何URL, 因为这种方法是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变。
2、forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式两者不是同一个application。
3、基于第二点,参数的传递方式不一样。forward的form参数跟着传递,所以在第二个实例中可以取得HTTP请求的参数。sendRedirect只能通过链接传递参数,response.sendRedirect(“login.jsp?param1=a”)。
4、sendRedirect能够处理相对URL,自动把它们转换成绝对URL,如果地址是相对的,没有一个‘/’,那么Web container就认为它是相对于当前的请求URI的。比如,如果为response.sendRedirect(”login.jsp”),则会从当前servlet 的URL路径下找login.jsp: http://127.0.0.1:8080/test/servlet/Servlet 重定向的URL: http://127.0.0.1:8080/test/servlet/login.jsp,如果为response.sendRedirect(”/login.jsp”)则会从当前应用径下查找url:http://127.0.0.1:8080/login.jsp。而forward不能这样处理相对路径。
java
他们的区别是:
response.sendRedirect是向客户浏览器发送页面重定向指令,浏览器接收后将向web服务器重新发送页面请求,所以执行完后浏览器的url显示的是跳转后的页面。跳转页面可以是一个任意的url(本服务器的和其他服务器的均可)。
RequestDispatcher.forward 则是直接在服务器中进行处理,将处理完后的信息发送给浏览器进行显示,所以完成后在url中显示的是跳转前的页面。在forward的时候将上一页面中传送的request和response信息一同发送给下一页面(而response.sendRedirect不能将上一页面的request和 response信息发送到下一页面)。由于forward是直接在服务器中进行处理,所以forward的页面只能是本服务器的

分享到:
评论

相关推荐

    jsp中标签,对象存储与提交,还有重定向和转发的区别。

    大连实习资料8月9日,主要内容有jsp中标签,对象存储与提交,还有重定向和转发的区别。

    一个基于struts的重定向和转发实例

    在struts中测试登录的redirect,transmit 一个测试重定向和转发的demo。演示转发到jsp和action的过程。 供参考。

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

    1.RequestDispatcher.forward()――转发 是在服务器端起作用,当使用forward()时, Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的 form提交至a.jsp,在a.jsp用到了...

    jsp 转发和重定向的区别(forward sendRedicreat)

    &lt;jsp:forward&gt;元素可以用来转发控制,而Response对象 的sendRedicreat()方法用来重定向请求

    javaServlet请求转发和重定向.pdf

    Java Servlet 请求转发和重定向是两种不同的页面跳转机制,它们在 Web 应用程序中扮演着重要的角色。理解这两种机制的区别和使用场景是非常重要的。 请求转发是指将请求再转发到另一资源(一般为 JSP 或 Servlet)...

    Servlet转发与重定向

    通过网上总结的Servlet的转发与重定向的区别介绍。希望可以帮的上大家

    JSP和Servlet面试题

    7.Jsp的重定向和转发的流程有什么区别 重定向是客户端行为,转发是服务器端行为 重定向时服务器产生两次请求,转发产生一次请求,重定向时可以转发到项目以外的任何网址,转发只能在当前项目里转发 重定向会导致...

    JSP程序设计考试试题与答案.docx

    2. JSP 转发和重定向:JSP 转发和重定向用于将请求转发给其他 JSP 页面或 Servlet。使用&lt;jsp:forward&gt;指令可以将请求转发给其他 JSP 页面,而使用sendRedirect 方法可以将请求重定向给其他 URL。 三、Servlet 和 ...

    2.JSP实现数据传递和保存.pptx

    * 转发和重定向的区别在于,转发是将请求转发到另一个资源,而重定向是将请求重定向到另一个资源。 中文乱码 * 中文乱码是指在网页上显示中文时出现乱码的情况。 * 中文乱码的解决方法是设置请求和响应的编码方式...

    JSP中5种跳转foward,request等等的详细区别

    JSP 中的五种跳转方式详细区别 在 JSP 编程中,跳转是一种常见的技术手段,用于将用户从当前页面重定向到另一个页面。JSP 中有五种跳转方式,包括 RequestDispatcher.forward()、response.sendRedirect()、jsp:...

    javaweb作业-Ajax、javabean、jsp、serviet、数据库编程

    2.javabean实例 3.JSP1练习 4.JSP2练习 5.在第5章课后习题2基础...重定向和转发有什么区别? EL的语法形式?引入它的主要作用?它访问的是Java脚本数据还是属性数据? 使用JSTL的步骤?分支标签和循环标签的语法形式?

    jsp九大内置对象讲解

    jsp的九大内置对象的详细讲解,包括重定向和转发的部分内容

    Servlet+jsp.docx

    创建web工程还有代码是试练,请求方式+重定向+请求转发+cookie+session+jsp(四大作用域九大内置对象)

    jsp和servlet中实现页面跳转的方式实例总结.docx

    JSP 和 Servlet 中实现页面跳转的方式实例总结 在 web 开发中,页面跳转是一个非常常见的需求,JSP 和 Servlet 是 Java Web 开发中两个最基本的组件,了解它们如何实现页面跳转是非常必要的。本文将根据 JSP 和 ...

    良心出品JSP程序设计期末试卷A题目及其答案.doc

    本资源摘要信息涵盖了 JSP 程序设计期末试卷的主要知识点,包括 JSP 页面的扩展名、导入 java.io.* 包、异常处理、隐式注释、重定向、Session 对象、JavaBean 的访问范围、请求转发、属性获取、条件标记、Filter ...

    JSP网上书店完整源代码

    用户在客户端请求jsp页面,jsp页面将结果提交到Servlet,由Servlet负责处理结果,访问数据库等操作,并将参数结果放在request,session,application等元素中,然后通过请求转发和重定向转发到其他jsp页面或者...

    Web 常见面试题

    3. http 中重定向和请求转发的区别(8个) 4. Cookie 和 Session
区别 5. 什么是 jsp,什么是 Servlet?jsp 和 Servlet 有什么区别? 6. jsp 有哪些域对象和内置对象及他们的作用 7. 过滤器和监听器是什么,有什么用...

    WebContent.rar

    用JSP实现登录,使用重定向和转发两个方法登录到登陆页面。

    解决struts2请求转发或重定向时,一个结果码无法对应多个视图的问题

    通过两个自定义结果集,解决struts2请求转发或重定向时,一个结果码无法对应多个视图的问题。以前的做法,是在配置Action时使用通配符解决,但这样需要JSP页面名称和Action的方法名称一致,如果命名不一致或不规范,...

Global site tag (gtag.js) - Google Analytics