`

转载【有关JSP中的转发和重定向用法】

    博客分类:
  • JAVA
阅读更多

转自: http://blog.csdn.net/cyhjrx/archive/2009/02/26/3938252.aspx

 

好长时间不看,又把基础只是给忘了。今天好好的再看看。呵呵呵......温故而知新啊!!!

1.RequestDispatcher.forward()――转发
    是在服务器端起作用,当使用forward()时, Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的 form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传 递.
   但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文 件,同时forward()无法在 后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过 response.setAttribute("name", name)来传至下一个页面.

转发后浏览器地址栏URL不变.

例:在servlet中进行重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
         response.setContentType("text/html; charset=gb2312");
         ServletContext sc = getServletContext();
         RequestDispatcher rd = null;
         rd = sc.getRequestDispatcher("/index.jsp");      //定向的页面
         rd.forward(request, response);
}
通常在servlet中使用,不在jsp中使用。

2.response.sendRedirect()――重定向
     是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.
    重定向后在浏览器地址栏上会出现重定向页面的URL
例:在servlet中重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)

         throws ServletException,IOException
{
         response.setContentType("text/html; charset=gb2312");
         response.sendRedirect("/index.jsp");
}
由于response是jsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定位。



由于response是jsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定位。



注意:
(1).使用response.sendRedirect时,前面不能有HTML输出。
这 并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说JSP  SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量 的 HTML输出也是允许的。
(2).response.sendRedirect之后,应该紧跟一句return;
我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。
比较:
(1).Request Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
(2).response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。
前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法.

注:在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。

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

它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。


如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。
另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交

4.修改HTTP header的Location属性来重定向
    通过设置直接修改地址栏来实现页面的重定向。
jsp文件代码如下:

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

5.JSP中实现在某页面停留若干秒后,自动重定向到另一页面
   在html文件中,下面的代码:
     <meta http-equiv="refresh" content="300; url=target.jsp">
     它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。
     由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。
     关键代码:
           String content=stayTime+";URL="+URL;
           response.setHeader("REFRESH",content);

 

分享到:
评论

相关推荐

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

    jsp 转发和重定向的区别 jsp 转发和重定向是两种常见的控制转移方式,它们都可以把控制从一个页面转到另一个页面,但是它们有很大的区别。 转发 jsp 转发是通过 `&lt;jsp:forward&gt;` 元素或 `request....

    转发与重定向的区别

    在Web开发中,转发(Forward)和重定向(Redirect)是两种常见的页面跳转方式。这两种方法虽然都能实现页面的跳转,但其内部工作原理、对客户端的影响以及应用场景都有所不同。本文将详细介绍转发与重定向之间的区别...

    请求转发与重定向

    在Web开发中,**请求转发**与**重定向**是两种非常重要的控制流程技术,它们都用于实现页面跳转的功能,但其工作原理和应用场景有所不同。 #### 二、请求转发 ##### 1. 定义 **请求转发**是在服务器内部进行的,它...

    请求转发与重定向的区别

    在Web应用开发中,请求转发(Request Forwarding)和重定向(Redirect)是两种常见的用于控制用户请求流向的技术。理解它们的区别对于深入学习Java Servlet、Web编程或HTTP协议至关重要。 首先,请求转发是在服务器...

    servlet请求转发、重定向、包含

    Servlet请求转发、重定向和包含是Servlet中处理客户端请求的重要技术,它们都涉及到如何有效地管理用户请求和页面跳转,但各自有不同的特性和应用场景。 1. **请求转发(Request Forward)** - 请求转发是在服务器...

    转发和重定向的区别 forward和redirect的区别

    在Java的Servlet编程中,`转发`和`重定向`是两种不同的机制,用于在服务器端将客户端的请求导向不同的资源。它们的主要区别在于请求处理流程、URL改变以及数据共享方式。 1. 转发(Forward): - 使用`...

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

    在JavaServer Pages (JSP) 技术中,标签、对象存储与提交、以及重定向和转发是核心概念,对于理解和开发动态Web应用程序至关重要。以下是对这些知识点的详细阐述: 1. JSP 标签: JSP标签是用于简化页面逻辑和提高...

    Servlet转发与重定向

    1. 转发的范围:RequestDispatcher.forward 方法只能将请求转发给同一个 WEB 应用中的组件,而 HttpServletResponse.sendRedirect 方法可以重定向到当前应用程序中的其他资源,也可以重定向到同一个站点上的其他应用...

    请求转发和重定向的区别共1页.pdf.zip

    在Web开发中,请求转发和重定向是两种常见的服务器端处理客户端请求的技术,它们虽然都是用来改变客户端浏览器的页面展示,但实现机制和效果却大相径庭。本篇文章将详细解析请求转发与重定向的区别。 一、请求转发...

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

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

    forward与redirect!转发和重定向 解析

    在Web开发中,Forward(转发)与Redirect(重定向)是两种常见的页面跳转方式。它们虽然都可以实现从一个页面跳转到另一个页面的功能,但在实现机制、应用场景以及对用户浏览器地址栏的影响等方面存在显著差异。 ##...

    javaServlet请求转发和重定向.pdf

    请求转发使用 RequestDispatcher 接口中的 forward() 方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应。 例如,使用 RequestDispatcher 对象的 forward() 方法来实现请求转发:...

    JSP重定向技巧

    本文将深入探讨JSP中的重定向技巧,包括服务器端重定向和客户端重定向,并分析它们的工作原理及适用场景。 首先,我们来看JSP页面重定向的三种主要方法: 1. 使用`response.sendRedirect()`方法,这是客户端重定向...

    基于框架的Web开发-处理数据模型、转发和重定向.docx

    本文将详细讲解如何处理模型数据、转发和重定向,这些都是Spring MVC中核心的流程控制机制。 首先,`@RequestMapping`注解是Spring MVC用来映射HTTP请求到处理方法的关键工具。它允许我们将HTTP请求路径与特定的...

    转发与重定向的详细说明

    在Servlet和JSP技术中,转发是一个非常重要的概念,对于实现复杂的业务逻辑和用户界面展现具有重要意义。 **1. 原理与流程** 当用户发起一个HTTP请求时,服务器端的应用程序(如Servlet或JSP)可以决定将请求转发...

    页面转向与重定向

    在 Servlet 中,我们可以使用 request.getRequestDispatcher("new.jsp").forward(request, response) 语句来实现转发,而重定向可以使用 response.sendRedirect("new.jsp") 语句来实现。在 JSP 页面中,我们也可以...

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

    在这个基于Struts的重定向和转发实例中,我们将探讨这两个关键概念在Web应用程序中的应用。 首先,让我们理解什么是重定向和转发: 1. **重定向(Redirect)**:在HTTP响应中,服务器向客户端发送一个302状态码,...

Global site tag (gtag.js) - Google Analytics