4.3.2 response.sendRedirect()

  一、response.sendRedirect()是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如Servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.jsp文件。  

  重定向后在浏览器地址栏上会出现重定向页面的URL

  例:Servlet中重定向

  public void doPost(HttpServletRequest request,HttpServletResponse response)

  throws ServletException,IOException

  {

  response.setContentType("text/html; charset=gb2312");

  response.sendRedirect("/index.jsp");  

  }

  由于responsejsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定位。

  注意:

  (1)、使用response.sendRedirect时,前面不能有HTML输出。

  这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。

  (2)response.sendRedirect之后,应该紧跟一句return;

  我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。

   在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。  

 

  二、修改HTTP HEADerLocation属性来重定向  

  通过设置直接修改地址栏来实现页面的重定向。

  jsp文件代码如下:  

  <%

  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

  String newLocn = "/newpath/jsa.jsp";

  response.setHEADer("Location",newLocn);

  %

  

  三、JSP中实现在某页面停留若干秒后,自动重定向到另一页面  

  在html文件中,下面的代码:

  <meta http-equiv="refresh" content="300; URL=target.jsp">

  它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。

  由上可知,可以通过setHEADer来实现某页面停留若干秒后,自动重定向到另一页面。

  关键代码:

  String content=stayTime+";URL="+URL;

  response.setHEADer("REFRESH",content);  

  如果总结得不够全面,请各位发表自己的意见或经验。


源码爱好者收集整理(shouce.ren)