当前位置:  编程技术>java/j2ee

在Jsp Servlet中页面重新定向总汇

    来源: 互联网  发布时间:2014-10-18

    本文导语:  1. RequestDispatcher.forward() 是在服务器端起作用, 当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.j...

1. 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文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面。
  重定向后浏览器地址栏URL不变。
例:在servlet中进行重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
  response.setContentType("text/html; charset=gb2312");
  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()可以重定向有frame.的jsp文件.
  重定向后在浏览器地址栏上会出现重定向页面的URL
  例:在servlet中重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
  response.setContentType("text/html; charset=gb2312");
  response.sendRedirect("/index.jsp");
}
  由于response是jsp页面中的隐含对象,故在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是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。
  比较:
  (1) Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
  (2) response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。
前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法。
  注:在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用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);


    
 
 

您可能感兴趣的文章:

  • 请问做jsp和servlet的朋友,有没有工具可以提供jsp,servlet单布编译执行的
  • 在jsp页面加载时自动调用某个特定的servlet,由servlet查询数据库输出WEB页面返回给jsp显示?
  • servlet什么时候用?有了jsp+javabean,为什么还要用servlet??
  • jsp+JavaBean vs jsp+Servlet+JavaBean
  • servlet使用RequestDispatcher到jsp页面,浏览器url栏还是servlet
  • jsp+javabean与jsp+servlet+javabean的区别是什么?
  • jsp/servlet配置的小问题,如何添加servlet包
  • 在编译使用扩展标签的java文件时,得到package javax.servlet.jsp does not exist,package javax.servlet.jsp does not exist的错误
  • 求教:在servlet中设定的cookie,为何在jsp中得不到值,但在别的servlet中能得到?
  • 得分套餐(32分):8。用TOMCAT时JSP表单提交信息给SERVLET处理时,“FORM ACTION=”后的SERVLET文件路径写什么?
  • 请教:servlet如何调用jsp页面或者servlet????
  • 详细说一说jsp+javabean和jsp+servlet的优缺点,现在最常用那种方式,?
  • servlet和jsp的区别
  • 为什么我在jsp页面用 "/servlet/goto.servlet?setname=中文",如果就这样传过去,在servlet里面得到的将是setname=null,如果传其他则可
  • servlet与JSP各有什么特点?
  • 关于jsp+servlet+javaBean结构?
  • 我在书上看到:“JSP页面最终都要编译成SERVLET 才能执行” 那么我自已可以写SERVLET 吗?如果能,又怎样运行它呢 ?
  • JSP和servlet有什么区别???
  • servlet对jsp有什么影响?
  • 学JAVA是先学JSP还是SERVLET?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [求助]如何将用jsp写成的动态页面(*.jsp), 转换成静态页面(*.html)???
  • 为何我使用javascript中location'****.jsp'跳到某一页面,jsp页面不重新编译执行
  • 让JSP页面过期, 保证每次JSP页面都是最新的.
  • 在JSP中如何从一个页面转向另一个页面?
  • 输入http://localhost:8080显示欢迎页面但无法显示JSP页面
  • 一JSP网站,统一指定一个errorPage页面,统一处理异常,在指定的errorPage页面中,我想知道具体是哪个页面出错的,即想知道出错页面的具
  • JSP中如何在一页面执行后导入另一页面?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • ?启动jsp页面时,让页面刷新(一次)?
  • JBuilder运行JSP的问题,一次只运行一个JSP页面
  • JSP父页面传参数到子页面及接收示例
  • jsp显示server数据库的内容,如何实现定时更新jsp页面
  • JSP页面如何设置页面的过期?
  • jsp页面中如何打印格式报表(不是打印页面内容)?
  • jsp对页面的大小有否限制,我的页面在60多K之后就断掉了!!!
  • 如何在jsp页面里通过按一个按钮,就关闭这个页面?我急,谢谢。17:00结贴;
  • 当我修改了一个jsp文件之后刷新页面,为什么页面上的内容没有更新的呢?
  • 用JBUILDER如何调试一个JSP工程,一次只运行一个JSP页面?
  • 在JSP中,如何从一个页面跳到另下页面,而同时还能保持Session?
  • 怎样用JSP将从树状存储结构中读取的数据在JSP页面上生成一个树状目录
  • JSP中清空cookie代码参考
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 初学jsp,一个html调用一个jsp,这个jsp调用一个javaBean,已编译成类,最后如何部署(用j2sdkee)?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3