JSP页面跳转的方法总结

1. response.sendRedirct("跳转到页面");
该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容.

> request无法传值过去.

> 执行完该页所有代码,然后再跳转到页面. 跳转地址栏改变.

>可以跳转到其他服务器上的页面response.sendRedirct(http://www.sun.com).

 

2.response.setHeader();
该方法和response.sendRedirect一样,通过修改HTTP协议的HEADER部分.

<% 
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
String newLocn="/index.html"; 
response.setHeader("Location",newLocn); 
%> 

 

3.<jsp:forward page="跳转页面"/>

该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.

>request可以传值过去.

>直接跳转到页面,后面的代码不执行

>无法跳转到其他服务器上的页面.
>图片不是绝对路径无法显示.

 

4.request.getRequestDispatcher("跳转页面");
>request可以传值过去.

>执行完该页所有代码,然后再跳转到页面.
>跳转地址栏不变.
>不可以跳转到其他服务器上的页面

 

PS

服务端的输出缓冲区
缺省情况下:服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上:
>该JSP网页已完成信息的输出

>输出缓冲区已满
>JSP中调用了out.flush()或response.flushbuffer()

输出缓冲区的大小可以用:或response.setBufferSize()设置,如下:

 

设置输出缓冲区的大小为1KB。或response.setBufferSize(1);
置输出缓冲区的大小为0,即不缓冲。或response.setBufferSize(0);
用response.getBufferSize()或out.getBufferSize()可取的输出缓冲区的大小,单位为字节. 用response.isCommitted()可检查看服务端是否已将数据输出到客户端. 如果返回值是true则已将数据输出到客户端,是false则还没有.

使用Response Buffering
通过打开“response buffering”可以缓冲一个值得输出的整个页面内容,这将最小化输出到浏览器的数据量,从而提高了整体性能。每一次输出都耗费许多,所以写得越少,效果越好。TCP/IP在发送少量大的数据包时,要比发送大量小的数据包工作效率高,因为它是慢速启动并不断发送的。

 

有2种方法打开Response Buffering。

首先,可以使用Internet Services Manager为整个应用程序打开response buffering,这是推荐的方式,而且在IIS4.0和IIS5.0中,默认状态下,response buffering是打开的。

其次,在每一页面上,可以在头部放置如下代码开打开response buffering:< % Response.Buffer = True % >

这段代码必须在任何数据输出到浏览器前被执行(就是说,在任何html内容显示前和在任何cookie被设置前)。通常情况下,为整个应用程序打开response buffering是很好的方案,这么做后就不用在每个页面头部设置如上的代码。

关于打开response buffering的一个通用问题是:用户必须要等待整个页面全部产生后,才能看到内容。对于一个长时间运行的页面来说,可以设置Response.Buffer=False关闭缓冲。然后,好的策略是利用Response.Flush方法,它将输出所有已被ASP描述的HTML内容到浏览器。比如,在描述了一个1,000行表格的100行后,ASP就可以使用Response.Flush来强迫输出这100行的内容到浏览器,这时用户就可以看到前100行数据,同时其余的行数据正在准备生成。
注意,关于上面的1,000行表格输出的例子,对于一些浏览器器来说,除非遇到< /table >标记,它们不会输出表格的任何内容。如果这样,可以将表格分割成许多含有少量行的多个表格,然后在每一个表格产生后,调用Response.Flush输出。新版的Internet Explorer在整个表格下载后才显示内容,并且,如果定义了表格的列宽度,生成表格的速度将特别快。

 

关于打开response buffering的另外一个问题是:当生成非常大的页面时,将消耗非常大的服务器内存。

 

1,在 <head >和 </head >之间加入这句就可以了:

 

 <meta HTTP-EQUIV=REFRESH CONTENT= "10;URL=http://www.ccb.cn " >

这种方法属于客户端的跳转。

 

2.JS页面跳转参考代码

第一种:

<script language="javascript" type="text/javascript"> 
window.location.href="login.jsp?backurl="+window.location.href; 
</script> 

 

第二种:

<script language="javascript"> 
   alert("返回"); 
   window.history.back(-1); 
</script> 

第三种:

<script language="javascript"> 
    window.navigate("top.jsp"); 
</script> 

 第四种:

<script language="JavaScript"> 
    self.location=’top.htm’; 
</script> 

 第五种:

 

<script language="javascript"> 
   alert("非法访问!"); 
   top.location=’xx.jsp’; 
</script> 

 javascript中弹出选择框跳转到其他页面

 

<script language="javascript"> 
<!-- 
     function logout(){ 
        if (confirm("你确定要注销身份吗?是-选择确定,否-选择取消")){ 
            window.location.href="logout.asp?act=logout"
        } 
     } 
--> 
</script> 
<script language="javascript"> 
<!-- 
function logout(){ 
    alert("你确定要注销身份吗?"); 
    window.location.href="logout.asp?act=logout" 
} 
--> 
</script> 

 定时跳转:

<table> 
    <tr> 
        <td id= "go_title">3秒后自动跳转到论坛首页 </td> 
    </tr > 
</table > 

var time=0; 
function gotoBbsIndex(){ 
    time++; 
    if(time==3){ 
    document.location.href= "bbs/main/index.html "; 
} 
document.getElementById( "go_title ").innerHTML=(3-time)+ "秒后自动跳转到论坛首页 "; 
window.setInterval( "gotoBbsIndex() ",1000); 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值