《五种jsp跳转方法》由会员分享,可在线阅读,更多相关《五种jsp跳转方法(3页珍藏版)》请在金锄头文库上搜索。
1、详细介绍五种 JSP 跳转方法2009-03-02 19:241.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 文
2、件,同时 forward()无法在后面带参数传递,比如 servlet?name=frank,这样不行,可以程序内通过 response.setAttribute(name,name)来传至下一个页面.重定向后浏览器地址栏 URL 不变.例:在 servlet 中进行重定向public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOExceptionresponse.setContentType(text/html; charset=gb2312);
3、ServletContext sc = getServletContext(); RequestDispatcher rd = null; rd = sc.getRequestDispatcher(/index.jsp); /定向的页面rd.forward(request, response); 通常在 servlet 中使用,不在 jsp 中使用。2.response.sendRedirect() 是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank 传至下个页面,同时它可以重定向至不同 的主机上,sendRedirect()可以重定向
4、有 frame.的 jsp 文件.重定向后在浏览器地址栏上会出现重定向页面的 URL例:在 servlet 中重定向public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOExceptionresponse.setContentType(text/html; charset=gb2312); response.sendRedirect(/index.jsp); 由于 response 是 jsp 页面中的隐含对象,故在 jsp 页面中可以用 resp
5、onse.sendRedirect()直接实现重定位。注意:(1) 使用 response.sendRedirect 时,前面不能有 HTML 输出这并不是绝对的,不能有 HTML 输出其实是指不能有 HTML 被送到了浏览器。事实上现在的 server 都有 cache 机制,一般在 8K(我是说 JSPSERVER) ,这就意味着,除非你关闭了 cache,或者你使用了 out.flush()强制刷新,那么在使用 sendRedirect 之前, 有少量的HTML 输出也是允许的。(2) response.sendRedirect 之后,应该紧跟一句 return; 我们已经知道 resp
6、onse.sendRedirect 是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。比较:(1) Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;(2) response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用 RequestDispatcher.forward()方法.注:在有些情
7、况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。3.它的底层部分是由 RequestDispatcher 来实现的,因此它带有 RequestDispatcher.forward()方法的印记。如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交4.修改 HTTP header 的 Location 属性来重定向通过设置直接修改地址栏来实现页面的重定向。jsp 文件代码如下:5.JSP 中实现在某页面停留若干秒后,自动重定向到另一页面在 html 文件中,下面的代码:它的含义:在 5 分钟之后正在浏览的页面将会自动变为 target.html 这一页。代码中 300 为刷新的延迟时间,以秒为单位。targer.html 为你想转向的目标页,若为本页则为自动刷新本页。由上可知,可以通过 setHeader 来实现某页面停留若干秒后,自动重定向到另一页面。关键代码:String content=stayTime+; URL=+URL; response.setHeader(REFRESH,content);