问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

页面怎么会延迟跳转

发布网友 发布时间:2022-04-22 02:00

我来回答

1个回答

热心网友 时间:2023-07-19 18:03

实现servlet延时跳转页面的方法
来源:中国自学编程网 发布日期:2008-10-11
根据MVC模式的要求,servlet的主要功能是进行控制,也就是跳转页面.那么,有时候我们想在跳转页面前,在某个页面输出一些提示信息,并停顿几秒,再跳转到希望到达的页面(很多论坛在你登录后或发帖后都有这样的功能吧,别人怎么实现的还没研究过^)。

以下方法是我暂时能想到的:
1.使用Thread.sleep()来延时。不成功。因为:
1)如果使用out.println()先输出某些内容,再sleep几秒,最后用sendRedirect等方法跳转,那么,out.println()内的内容不会被输出,因为必须调用out.flush()方法清空缓存,内容才会显示在页面上。
2)如果使用out.println()输出内容,然后调用out.flush()将内容显示到页面上,再sleep几秒,最后用sendRedirect()等方法跳转页面,则直接报异常。因为当out.flush()时,request,response已经被提交,他们的实例已经销毁,当然不能再去调用其方法了。
2.使用out.println()为页面写上<meta>标记,<meta http-equiv="refresh"content="5; url=index.jsp"> ,表示5秒后跳转到target.jsp页面。
3.再JS中写location=index.jsp来实现跳转(还没实验过,理论上可行)。

这时,我们有2个问题要解决,一个是,我想实现页面上显示倒计时读秒,读到1时再进行跳转。另一个是,那么多JS和HTML,让我顺着用out.println()写到Servlet里,我肯定吐血死掉。
先来看第1个问题吧,貌似有2个办法:
1) 代码很简单,也是利用meta实现自动跳转,然后用setTimeout反复调用某个函数,来重写div中数字的值。但是理论上来说,这样做的话,计时不够精确吧。。。。。那么就看第2个方法吧。

<!-- 代码片段A -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<meta http-equiv='refresh' content='5;url=index.html'>
<script type='text/javascript'>
var i=5;
function getTime(){
document.getElementById('num').innerHTML="<font color='red'>"+i+"</font>";
i-=1;
var x=setTimeout('getTime()',1000)
if(i<=0){
clearTimeout(x);
}
}
window.onload=getTime;
</script>
<TITLE>欢迎您!</TITLE></HEAD>
<BODY>
<h2>注意!!页面将在<div id='num' style='display=inline;'>5</div>秒后跳转</h2>
</BODY>
</HTML>

2)其实和上面的方法基本一样,只不过是等待i变为0时,写

window.location=index.html,应该就精确点了- -!

那么现在来看第2个问题,这确实是一个很棘手的问题,想想半年前刚学servlet时就考虑过这个问题,也问过老师,当然,并没有什么好的解决方案。今天又再次遇到这破问题,好好思索了一下,终于有了个比较好的办法!!!
1)首先,我们把刚才那些麻烦的代码(代码片段A),先写到个html或txt中测试,保证功能已经实现。说简单点就是把你要的页面先写好(用DW等更方便)。
2)去MyEclipse等IDE中,新建一个JSP页面,将你写好的HTML文件里的代码粘贴进去。
3)运行服务器,并访问一次该JSP。
4)去工作区下的.metadata文件夹中搜索后缀为.java的所有文件。你就会看见有个文件叫“你的JSP_jsp.java”。它就是JSP转译成的servlet文件。
5)在此servlet中,WEB容器已经将你写在JSP里的JS和HTML代码全部加上了out.println()并且将斜杆,双引号之类的问题全部处理好了。你要做的仅仅就是把那些N个out.println()复制到你的servlet当中,大功告成!波个~ ~

其实自己想想,这样做还挺无聊的。。。。完全可以在Servlet里直接访问这个要倒计时的页面,由这个页面计时完成后跳到要显示的目标页面。何必去麻烦的做一大堆out.println()呢。。。。。。。。但是好象不大符合MVC模式……怎么能用HTML来进行控制任务呢?很多时候一大堆out.println()还是无法避免的吧,但这样又让servlet承担了显示任务……哈哈,真矛盾。大家看看也就行了,相信无数新手在学习servlet时都会有我这样的想法吧,呵呵。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 电脑桌面底部任务栏出现很多重影是怎么回事? 男人怎么会延时、 买汽车能还价吗? 能还多少? 买新车怎么砍价? 新手第一次买车,面对销售的一口价,到底该如何谈价? 买车如何砍价?老销售教你一招,花最少的钱买最好的车 第一次去4s店买车,一般情况下砍价要砍多少呢? 新手第一次买车怎么砍价 在购买汽车的时候,该怎样跟销售员谈价格呢? 买新车如何谈价格 新车可以讲价吗,优惠会吗 购买新车的时候,应该怎样正确讲价? 准备购买人生第一辆车,去4s店如何与销售砍价格? 4S店买车可以砍价吗?该如何有效的砍价呢? 买新车了吗?你买车如何砍价呢? 第一次买车怎么谈价格 买车的时候该如何与车商砍价,才不会被人笑话呢? 买汽车的时候有哪些砍价小技巧? 怎样在买车的时候砍价呢?怎么试探到销售的低价呢? 中国传统笑话TXT 360随身wi-fi怎么会延时 魔兽争霸怎么会延迟几秒? 飞机因什么原因会延机?我定的准点率为27%,是不是... 微信上的纪念币预约官方商城是什么一个店? 大学为什么会延期毕业 桌面下面的任务栏怎么重新放到屏幕下方? 求方法 玩游戏会延迟,是怎么回事 电脑桌面下面的任务栏怎么变成双层了的 如何延伸聊天 技巧? 猪年纪念币怎么预约 windows10打开文件夹闪退,黑屏,之后桌面底部任务... 收邮件怎么会延迟1o分钟 任务栏通常位于桌面的底部,它的位置可以改变吗 家里的网络有时会延迟很大,怎么回事? DNA子链延伸是怎么回事什么意思怎么会延伸?这一课... win10桌面底部的任务栏总是跑位置,重新设置固定在... 为什么微信收信息会延迟怎么办 桌面底部任务栏图标过多怎么办 预约猪年纪念币只能使用身份证吗? 如何将话题延伸技巧