java 跳转语句html跳转

博客分类:
  让超链接点击后不跳转,可以用href = "#",但是这个#就会锚点到页面最上边
&&& 点击链接后不跳转可以设置成
&&& 1.&a href="javascript:void(0);" &javascript:void(0);&/a&
&&& 2.&a href="javascript:;" &javascript:;&/a&
&&& 3.&a href="" onclick=""&&/a&&&&&
&&& 4.&a href="#" onclick=""&&/a&
&&& 5.&a href="##" &##&/a&
&&& 6.&a href="####" &####&/a&&&&&
&&& 7.&a href="#all" &#all&/a&
&&& 如果想点击超链接调用js方法的话可以设置成
&&& 1.&a href="javascript:void(0)" onclick="jsFun()"&jsFun&/a&
&&& 2.&a href="#" onclick="jsFun();"&jsFun();&/a&&&&&&&&&&&&&&&&
&&& 3.&a href="#" onclick="alert(1);event.returnValue="&alert(1);event.returnValue=&/a&
&&& 1.javascript:void(0)不建议使用
&&& 2.链接(href)直接使用javascript:void(0)在IE中可能会引起一些问题,比如:造成gif动画停止播放等,所以,最安全的办法还& 是使用“####”。为防止点击链接后跳转到页首,onclick事件return false即可。
&&& 3.如果仅仅是想鼠标移过,变成手形,可以使用
&&& &span style="cursor:pointer" onclick="jsFun()"&手型!&/span&
&&&
黑色头发:/
浏览 42025页面自动跳转与http302、html refresh以及js跳转之间的关系&&categories:&&author:原创文章,转载请指明出处并保留原文url地址什么是页面跳转,为什么页面跳转,怎么进行页面跳转。关于网页跳转技术很多,文章也很多,方法代码都很多,但是这些方法差别在那里,那些方法速度快,那些方法灵活,那些方法用户能感觉到,为什么能感觉到,我看了一些文章,结合多年的工作经验,通过绘制序列图等办法简单总结一下,换个角度理解一下,希望对大家有所帮助!本文重点在于比较http跳转,html跳转,js跳转的工作流程,以及重点分析他们在时间开销上的情况,同时我们重点在于绘制一些图形,然后希望读者能够从图中体会到区别,需要读者体会的地方都用特别区域标识出来了。请大家注意。一.什么是页面跳转网站都是由各种各样页面组成,正常情况下A页面里面包含B页面,C页面的链接,用户在浏览A页面过程中,手工人为点击B链接,然后用户浏览器就显示到B页面。这个过程我们就可以叫页面跳转。我们显然不是说这种页面跳转。我们考虑如下场景,一个网站由A,B,C页面构成。正常他们有他们自己显示内容。随着时间推移,发现A页面内容应该同C页面内容相同,但是由于A页面已经被大量用户收藏在浏览器的收藏夹中,或者被搜索引擎收录,若是现在取消A页面的地址(就是取消页面),则对用户是个非常糟糕的事情,但是同时维护两个页面A及C又是个麻烦的事情,稍有疏忽就会造成内容不一致,给用户造成困惑,同时搜索引擎也会不认可。 如何保证A地址不取消,同时又准确保证两个页面显示内容相一致?我们今天要解决的是在没有用户干预下的页面跳转,完成当用户需要显示页面A时,我们给他显示页面C的内容。另外为了说明问题方便,我们同时也假设页面B内容也指向内容C,只是采用跳转技术不一样,这样我们方便区别两种行为的差别。图1
浏览器访问服务器示意图如上图中,展示了用户访问服务器获取页面的一个基本过程。图中主要分为两个部分,左侧区域是用户端, 右侧区域是服务端,用户端的用户通过手机或者电脑或者智能设备访问服务端页面。服务端由若干页面构成,这里简化了服务端行为,并且抽象成三个页面A,B,C,正常情况下服务端应该有很多Action对象,Action对象同页面相对应,提供各种服务,我们仅仅简化Page:A, Page:B, Page:C用户端就是手机, 包括手机操作操作系统, 网络层(tcp/ip/udp等),http等协议层,以及浏览器,浏览器内部进行html的解析,css渲染,js执行引擎等等。典型用户页面浏览行为如下:1. 用户启动浏览器2. 在浏览器地址中输入url地址3. 浏览器发起http请求4. 网络层发起tcp请求到服务器,传输http数据包5. 服务器接收到请求后进行处理,然后返回相关页面内容6. Tcp接收返回数据给http协议解析系统7. http将返回数据返回浏览器8. 浏览器解析html数据,处理html head9. 根据head处理后续工作10. 解析body数据11. 处理装载事件Onload(已经开始js的执行,在装入数据过程中已经可以执行一些js事件,具体要根据页面以及浏览器特性而定)12. 根据css进行显示,执行js13. 用户进行后续事情以上仅仅是典型浏览器行为, 具体浏览器行为同页面内容、浏览器特性等都有关系,要具体分析。另外网站中一篇文章可供参考“”二.页面跳转的分类根据上面的图1,我们可以有如下分类方法:一)以跳转地点发生系统那一侧分为:l 服务端跳转页面跳转发生在服务端,服务端负责将实际内容获取,然后发送给客户端,这个情况下,一般用户不会感觉到跳转的实际行为,因此有些时候我们也不叫做跳转。具体的服务端跳转行为有很多,各个技术都有各自的特点,例如: Struts2基于注解服务端跳转、&request.getRequestDispatcher(“xx.jsp”).forward(request,response)、&jsp:forward page=””/ &等,php也有自己的放回,总之各自有各自的办法,大家自己去搜索吧。l 客户端跳转跳转行为需要客户单程序参与的一种行为(自然不是用户参与的,那个不是本文讨论的)。在这个过程中,一般用户一定会知道的,浏览器地址栏会发生变化,这个分类比较多,我们专门进行一个分类。二)用户端跳转中,我们根据跳转行为发生在那个软件层次,分为:http层跳转、应用层跳转;应用层跳转继续分为:html head跳转、js跳转等。l http层跳转http跳转是指server根据工作情况通过http返回状态码,指示客户端浏览器跳转到相应页面的过程,一般返回码是302.,下面是http302状态码的定义:l Html head头指令跳转在html代码的head中添加特殊标签,如下&meta http-equiv=”refresh” content=”5; url=/” /&表示:5秒之后转到快乐成长首页。这个跳转需要浏览器具体解析html后采能进行,慎重更多时间才能进行,或者情况更复杂。l Js跳转通过在html代码中添加js代码,通过js代码实现跳转&script language=”javascript” type=”text/javascript”&window.location.href=”login.jsp?backurl=”+window.location.&/script&这个跳转应该比html head跳转更向后延迟。三.服务端跳转流程页面跳转显示的内容发生在服务端,服务端负责将实际内容获取到,然后发送给客户端。一般用户不会感觉到跳转的实际行为,因此有些时候我们也不叫做跳转具体工作的参考过程如下:如上图,用户请求访问PageA,页面A内容指向页面C,相关过程如下:1. 用户通过浏览器访问PageA2. 浏览器通过http处理模块请求 Get PageA3. http处理模块同服务器建立tcp连接,并发出请求获取PageA指令4. PageA内容指向PageC,通过内部程序将内容C获取到本地5. PageA接收到PageC的数据后,将数据返回给http模块6. http模块接收到数据后返回给浏览器7. 浏览器接收到http返回的html数据后,解析html的head8. 处理html的body9. 处理html的onload方法10. 浏览器最后将数据等显示给用户注意:图中不同斜线的区域通过server跳转后,用户看到的是PageC的内容,但是浏览器地址栏中地址是PageA的地址。优点:跳转行为在server进行, 一次tcp连接完成相关操作,对用户是透明的,不会造成疑惑。缺点:对用户隐藏了信息,跳转行为都发生在server端,对server有压力。server端功能各异,需要分工负责,当用户访问某功能后,需要返回另外一个功能,这个时候没必要把全部功能都放到一个服务器上。例如:单点登录,用户在某个服务器上登录成功后,一定要在重新跳转到功能服务器上。网络支付,用户在银行的网站支付完成后,必须重新定向到另外企业应用服务器上。适用范围:应用内部系统,适当的包含关系时。四.http跳转流程http跳转是指server根据工作情况通过http返回状态码,指示客户端浏览器跳转到相应页面的过程,一般返回码是302.,下面是http302跳转的相关参考流程注意图中,区域,颜色,斜线等等。如上图,用户请求访问PageB,页面B内容指向页面C,相关过程如下:1. 用户通过浏览器访问PageB2. 浏览器通过http处理模块请求 Get PageB3. http处理模块同服务器建立tcp连接,并发出请求获取PageB4. PageB内容指向PageC,PageB的处理模块通过http的重定向协议通知客户端程序,通过发送消息,302,以及跳到目的地址等进行5. http处理模块接收到消息后直接跳转到目标地址,同时通知浏览器(修改地址栏)6. http处理模块请求PageC页面内容7. PageC处理模块处理数据,生成html代码,返回数据给http处理模块8. http处理模块接收到数据后放回数据给浏览器9. 浏览器接收到http返回的html数据后,解析html的head10. 处理html的body11. 处理html的onload方法12. 浏览器最后将数据等显示给用户优点:相应速度快,在http1.1协议下通过合适的设置可以使用同一个tcp连接,节省网络时间,服务器及用户端都不需要进行额外的数据处理工作,节省时间。缺点:仅仅能做跳转没有其他功能,基于js及html的跳转可以选择延时跳转,但是302无法选择延时跳转等适用范围:快速跳转,不需要延时,经常用在两个系统之间跳转等。五.Html refresh跳转流程通过在html head中添加&meta&标签,在标签里指定相关参数,指示浏览器跳转到相应页面,相关跳转必须在http层面将html数据传输给浏览器后,浏览器解释html代码过程中,发现跳转并且根据跳转指令跳转到相应页面。参考流程如下图:如上图,用户请求访问PageB,页面B内容指向页面C,相关过程如下:1. 用户通过浏览器访问PageB2. 浏览器通过http处理模块请求 Get PageB3. http处理模块同服务器建立tcp连接并发出请求获取PageB4. PageB处理模块处理数据,生成html代码,最后将html通过http协议传输回去。5. http后将数据放回给浏览器,浏览器开始处理html6. 浏览器首先会处理html的head部分,最后发现有跳转的相关指令7. 浏览器根据跳转指令,重新联系http模块,发出获取PageC的指令8. http通过tcp连接到服务器,获取PageC内容,然后返回给浏览器9. 浏览器接收到http返回的html数据后重新处理html,首先解析html的head10. 处理html的body11. 处理html的onload方法12. 浏览器最后将数据等显示给用户优点:跳转方式灵活,可以指定延时跳转等等缺点:可能多次建立tcp连接,在低速网络下效率更低,浪费客户端的时间六.Html js 实现跳转工作流程最后来看一下js跳转,工作中每个浏览器都有自己的js执行引擎,执行引擎根据js代码,来动态调用浏览器进行跳转,相关参考代码如下:&script language=”javascript” type=”text/javascript”&window.location.href=”login.jsp?backurl=”+window.location.&/script&具体js跳转过程如下图1. 用户通过浏览器访问PageB2. 浏览器通过http处理模块请求 Get PageB3. http处理模块同服务器建立tcp连接同server建立连接,并发出请求获取PageB4. PageB处理模块处理数据,生成html代码,最后将html通过http协议传输回去。5. http后将数据放回给浏览器,浏览器开始处理html6. 浏览器首先会处理html的head部分,最后会发现有跳转的相关指令7. 浏览器处理html的body,以及js等,最后根据js的指令指示浏览器获取页面C8. 最后根据js的指令指示浏览器获取页面C浏览器会根据跳转指令,重新联系http模块,发出获取PageC的指令9. http通过tcp连接到服务器,最后获取PageC的内容,然后返回给浏览器10. 浏览器接收到http返回的html数据后重新处理html,首先解析html的head11. 处理html的body12. 处理html的onload方法13. 浏览器最后将数据等显示给用户优点:跳转方式灵活,可以指定延时跳转等等,缺点:可能多次建立tcp连接,在低速网络下效率更低,浪费客户端的时间使用访问:快速跳转,不需要延时,经常用在两个系统之间跳转等。七.小结每种跳转方法对于用户来讲都带来了内容上的变化,原以为A页面的内容变成C页面内容。跳转的方法有很多,无法一一列举,当我们适用时如何选择那种类别时,需要弄明白每一种跳转的特点,包括:性能,功能等根据不同网络情况进行不同的选择,例如有的网络建立tcp连接速度慢,这个时候就适宜选择server端的跳转等若是保证系统之间的耦合关系更小,系统之间更灵活则需要采用http方式跳转、js跳转,html跳转等。有的时候需要在跳转前进行一些判断或者额外的操作等,就是js跳转比较方便,但是也有个浏览器适配的问题。有时候一个js兼容性不好的js代码可能不工作,造成部分用户无法跳转。八.页面跳转最糟糕的情况当A跳转到B时,我们用符号A–&B表示,下面的循环跳转A–&B–&C–&A ,会发生什么事情。若是循环跳转仅仅发生在server端,则相关系统会迅速被拖垮。若是循环跳转发生在客户端参与的系统中,很快客户端及server端都会发生问题。因此循环跳转我们是要严格避免的,解决办法:1. 不跳转,但是不可能完全避免,并且不太可能实现,一般系统都是开放的系统,会不断添加功能,即使当前没有跳转,但是过几个月。。。。。。2. 打破跳转的循环,加强系统的检查力度避免循环跳转的发生。3. 最重要的,监控系统,当发现某个客户端或者系统在单位时间内有过多的访问时,主动断开连接或者拒绝这个客户端的访问等等。这个非常重要,一个好的系统是必须有这个功能的,否则即使没有 循环跳转,但是若是用户 连续快速访问一个页面也是有很大问题的,例如ie中按下F5键 循环刷新页面,若是没有检测机制。。。。近期文章
分类目录选择分类目录书路&&(10)儿童画&&(121)&&&儿童作品&&(82)&&&儿童画教程&&(24)原创&&(127)&&&0基础编程&&(23)&&&android&&(9)&&&hadoop&&(18)&&&java原创&&(2)&&&livewriter&&(11)&&&nginx&&(52)资料&&(1,056)&&&android资料&&(83)&&&java资料&&(74)&&&linux资料&&(36)&&&mq&&(24)&&&mysql资料&&(34)&&&nginx资料&&(17)&&&svn&&(9)&&&wordpress&&(48)&&&搜索资料&&(45) 文章归档 选择月份 2017年十二月 &(8) 2017年十一月 &(3) 2017年九月 &(3) 2017年八月 &(1) 2017年七月 &(15) 2017年六月 &(23) 2017年五月 &(35) 2017年四月 &(38) 2017年三月 &(20) 2017年二月 &(5) 2017年一月 &(9) 2016年十二月 &(8) 2016年十一月 &(1) 2016年十月 &(10) 2016年九月 &(5) 2016年八月 &(8) 2016年七月 &(6) 2016年六月 &(9) 2016年五月 &(14) 2016年四月 &(6) 2016年三月 &(21) 2016年二月 &(11) 2016年一月 &(15) 2015年十二月 &(18) 2015年十一月 &(14) 2015年十月 &(6) 2015年九月 &(6) 2015年八月 &(7) 2015年七月 &(11) 2015年六月 &(19) 2015年五月 &(27) 2015年四月 &(19) 2015年三月 &(35) 2015年二月 &(38) 2015年一月 &(20) 2014年十二月 &(8) 2014年十一月 &(8) 2014年十月 &(3) 2014年九月 &(3) 2014年八月 &(3) 2014年七月 &(4) 2014年六月 &(3) 2014年五月 &(7) 2014年四月 &(9) 2014年三月 &(8) 2014年二月 &(8) 2014年一月 &(11) 2013年十二月 &(11) 2013年十一月 &(9) 2013年十月 &(40) 2013年九月 &(79) 2013年八月 &(50) 2013年七月 &(68) 2013年六月 &(50) 2013年五月 &(59) 2013年四月 &(65) 2013年三月 &(59) 2013年二月 &(20) 2013年一月 &(59) 2012年十二月 &(52) 2012年十一月 &(91) 2012年十月 &(23)怎么用java代码控制html页面跳转_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
怎么用java代码控制html页面跳转
就像是点击网页中的一个链接一样
我有更好的答案
getWriter(),并向跳转页面传递参数*// servlet实现跳转(客户端跳转)}2、服务器端跳转// 使用req对象获取RequestDispatcher对象dispatcher.forward(req, resp);), &haiyun&); /&#47.do&);)!&reqjsp中通过后台servlet是可以跳转页面的。1、客户端跳转// &#47.println(&quot.getWriter();H / 使用response对象的sendRedirect实现客户端跳转&#47.getRequestDispatcher(&test-04.jsp& &#47.sendRedirect(&test.setAttribute(&name&,HttpServletResponse res) throws ServletException,IOException {PrintWriter out =/ servlet的doGet方法public void doGet(HttpServletRout,且向目标页面传递参数public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException{PrintWriter out =/ 使用RequestDispatcher接口实现服务器端跳转;/** 在servlet中实现服务器端跳转; 为request对象添加参数RequestDispatcher dispatcher = req
- -!咋个感觉像是写服务端,响应客户端的点击事件返回数据的一样。我现在做的是发送请求登陆页面后,需要的那个页面得点击一个按钮才跳的过去,重点是不知道咋个点那个按钮并获得数据,而且点的时候看地址栏没有变化。求助……
采纳率:94%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包& AK相信页面跳转在这个圈圈圆圆里是个地球人都能经常遇到的事,AK也在平时的工作学习中记录了一些,这里就做一个小小的总结,有任何的疑问和质疑都希望您能告诉我,不用担心后果,必定至少您还能理我,AK万分感激...
& 1. \*页面链接式:*\&& & & &
&&a href="javascript:history.go(-1)"&返回上一步&/a&
& 2.\*页面按钮式:*\
&input name="ak" type="button" value="go" onClick="location.href=&/&"&
& 3.\*直接跳转式:*\ & & & &&
&script&window.location.href='aklovebb.html';&/script&
& 4.\*JS中的跳转:*\ && & & &
1.&window.location.href=&& &或者 location.href="ak_bb.jsp"
2.window.history.back(-1); && & //返回
3.self.location=&ak_bb.html&;&
4.top.location=&bb_ak.jsp&; && & //这个方法是让顶层页面跳转
&&5.\*请求转发:*\
&HttpServletRequest & & &&request.getRequestDispatcher("ak_bb.html").forward(request,response);&
& & &也叫请求派发,页面内容跳转到ak_bb.html,但是当前页的地址是不会改变的。
& & &在jsp中也可以这样实现:&jsp:forward page="ak_bb.jsp" /&&
& 6.\*请求重定向:*\
HttpServletResponse & & response.sendRedirect("bb_ak.jsp");&
& & &和转发不同,重定向是内容和地址都转到bb_ak.jsp。
& & &在jsp中也可以这样实现重定向:&%response.sendRedirect("bb_ak.jsp")%&
&&当然请求转发和重定向的不同原没有这么简单,下面就简单枚举一下他们的区别:
& &1》转发只访问服务器一次;而重定向访问服务器两次。
& &2》转发只能看见第一次访问页面的url,以后的工作都是服务器来做的;重定向是可以看到目标页面的url。
& &3》转发是执行了跳转页面,下面的代码就不会在执行了;重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句。
& &4》转发前后是共享一个request和reponse;而重定向跳转后是生成了新的request和reponse。
& &5》请求转发只能访问自己web应用资源;重定向可以访问外部的资源,简言之就是response.sendRedirect("http://");&
&如果您还对AK的枚举的区别不满意,想了解的更详细,为你推荐一篇:
阅读(...) 评论()

我要回帖

更多关于 java 跳转url 的文章

 

随机推荐