jsp 中怎么实现页面跳转

时间:2013.01.16 发布人:abj778810

jsp 中怎么实现页面跳转

已解决问题

谷歌abj778810用户在2013.01.16提交了关于“佣兵天下jsp 中怎么实现页面跳转”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T21:09:37。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,希望你能感受到,我最真诚的谢意 !

希望以下的回答,能够帮助你。

第1个回答

用户名:h**Oh**Osblo更效够乱气g  

"1.Reques331215问答tDispatcher.forward()
在服务器端起作用,当用forward()时,Servletengine传递h**TTP请求从当前的Servlet或是JSP到另外的1个Servlet、JSP项垂松后仅际掌严或普通h**TML文件,也即你的form提交至a治.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的全部信息在b.jsp都可以获得,参数自动传递.但for喜认答规故围ward()没方法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()没方法在后面带参数传递,例如servle底并矛作革跟两t?name=f根试问理试固rank,这样不成,可以程序内通过resp杆标响同onse.setAttribute("name",name)来传至下合白鲜光继背那队文1个页面。
重定向后浏览器地址栏URL不变。
例:在servle事指完式报t中进行重定向
publicvoiddoPost(h**ttpServletReques把定则味成杨易段压情酸trequest,境持组h**ttpServletResponseresponse)
throwsServletEx具至请并九天形如渐拉氢ception,IOException{
response.setContentType("text/html;charset=gb2312");
ServletContextsc=getServletContext();
RequestDispatcherrd=**ll;
rd=sc.getRequestDispatc置念速阻六her("/index.jsp");//定向的页面
rd.forward(request,response);
}
通常在servlet中用,不在jsp中用。


2.respon衡述se.sendRedirect()
在用户的浏览器端工作,sendR之溶edirect()可以带参数传递,例如servlet?name=frank传至下个页面,同时它可以重定向至不一样的主机上,sendRedirect()可以重定向有frame.的jsp文件.
重定向后在浏览器地址栏上会出现重定向页面的URL。
例:在servlet中重定向
publicvoiddoPost(h**ttpServletRequestrequest,h**ttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=gb2312");
response.sendRedirect("/index.jsp");
}
由于response是jsp页面的隐含对象,故在jsp页面中可用response.sendRedirect()直接实现重**。
注意:
(1)用response.sendRedirect时,前面不能有h**TML输出;
这并不是绝对的,不能有h**TML输出其实是指不能有h**TML被送到了浏览器。事实上目前的server都有cache机制,一般在8K(我是说JSP**RVER),这就意味着,除非你关掉了cache,或你用了out.flush()强制刷新,那么在用sendRedirect之前,有少量的h**TML输出也是允许的。
(2)response.sendRedirect之后,应当紧跟一句return。
我们已经知道response.sendRedirect是通过浏览器来做转向的,因此仅有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有啥意义呢?并且有可能会由于后面的输出导致转向失败。
比较:
(1)Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
(2)response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看见跳转后的链接地址。
前者更加高效,在前者可以满足要时,尽量用RequestDispatcher.forward()方法。
在有些情形下,例如,要跳转到1个其它服务器上的资源,则必须使h**ttpServletResponse.sendRequest()方法。


3.<jsp:forwardpage=""/>
它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。
假如在之前有特别多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应当特别注意。
注意:它不能改变浏览器地址,刷新的话会导致重复提交


4.修改h**TTPheader的Location属性来重定向
通过设置直接修改地址栏来实现页面的重定向。
jsp文件代码如下:
<%
response.setStatus(***.SC_MOVED_PERMANENTLY);
StringnewLocn="/newpath/jsa.jsp";
response.seth**eader("Location",newLocn);
%>


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