JSP页面跳转的几种方法以及注意点

       最近自己在做项目时遇到一个问题,明明加了response.sendRedirect() ,系统也执行了,但是它就是不跳转;最后在网上找到原因如下:

       首先我们要知道的是用response.sendRedirect做转向的原理,它其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以sendRedirect时,浏览器的地址栏上可以看到地址的变化。 而用<jsp:forward page=""/>则不同,它是直接在server做的,浏览器并不知道,也不和浏览器打交道,这从浏览器的地址并不变化可以看出。

        所以使用response.sendRedirect时就需要注意以下两点:

       1、在使用response.sendRedirect时,前面不能有HTML输出。

       这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。

        如下图所示,<jsp:include flush="true" page="html/userlogin.html"></jsp:include>必须在jsp语句之后才能引入,否则就会出现错误!

       

        2、在response.sendRedirect之后,应该紧跟一句return;

        我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。

        JSP中还有的跳转语句包括:request.getRequestDispatcher(“”);

         request.getRequestDispatcher().forward(request.response)这个语句意思是将客户端的请求转向(forward)到getRequestDispatcher()方法中参数定义的页面或者链接。
         说通俗点就是,当一个客户端的请求到这个页面后,不做处理或者不处理完,将请求转给另一个页面处理,然后再响应给客户端。

         而这两种跳转方法的区别就在于:

        
getRequestDispatcher是服务器内部跳转,地址栏信息不变,只能跳转到web应用内的网页。
         sendRedirect是页面重定向,地址栏信息改变,可以跳转到任意网页。

时间: 2024-08-02 04:19:05

JSP页面跳转的几种方法以及注意点的相关文章

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都可以获得,参数自动传递. 但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,

js实现页面跳转的几种方法小结_javascript技巧

按钮式: <INPUT name="pclog" type="button" value="GO" onClick="location.href='http://www.jb51.net/'"> 链接式: <a href="javascript:history.go(-1)">返回上一步</a> <a href="<%=Request.ServerV

js实现页面跳转的五种方法推荐_javascript技巧

js实现页面跳转的五种方法推荐 第一种: 复制代码 代码如下: <script language="javascript" type="text/javascript"> window.location.href="xx.jsp?backurl="+window.location.href; </script> 第二种: 复制代码 代码如下: <script language="javascript&quo

PHP页面跳转的三种方法

Web系统中,从一个网页跳转到另一个网页,是项目中最常用的技术之一. 页面跳转可能是由于用户单击链接.按钮等引发的,也可能是系统自动产生的. 此处介绍PHP中常用的实现页面自动跳转的方法. PHP页面跳转一.header()函数 header()函数是PHP中进行页面跳转的一种十分简单的方法. header()函数的主要功能是将HTTP协议标头(header)输出到浏览器. header()函数的定义如下: void header (string string [,bool replace [,

PHP页面跳转代码几种方法

PHP 跳转  代码如下 复制代码 <?php header("location: http://www.111cn.net"); ?> header函数使用 PHP页面跳转一.header()函数 header()函数是PHP中进行页面跳转的一种十分简单的方法.header()函数的主要功能是将HTTP协议标头(header)输出到浏览器. header()函数的定义如下: void header (string string [,bool replace [,int h

jsp下页面跳转的几种方法小结_JSP编程

1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet或者是JSP到另外的一个Servlet.JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递. 但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同

javascript页面跳转的几种方法

页面跳转在js中用很多的方法,下面我们介绍四种方法,大概原理都一样的. <script language="网页特效" type="text/javascript"> window.location.href="111cn.net.jsp教程?backurl="+window.location.href; </script> 方法二   <script language="javascript"&

实现网页页面跳转的几种方法(meta标签、js实现、php实现)

1.meta标签实现 只需在head里加上下面这一句就行了,在当前页面停留0.1秒后跳转到目标页面  代码如下 复制代码 1 <meta http-equiv="refresh" content="0.1; url=http://www.111cn.net/"> 2.Javascript实现 方法一: 这个方法比较常用 1 window.location.href = "http://www.111cn.net/"; 方法二:  代码

js 控制页面跳转的5种方法_javascript技巧

第一种: 复制代码 代码如下:     <script language="javascript" type="text/javascript">           window.location.href="login.jsp?backurl="+window.location.href;     </script> 第二种: 复制代码 代码如下:     <script language="javas