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

jsp下页面跳转的几种方法小结

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

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

1. RequestDispatcher.forward()
  在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet或者是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. <jsp:forward page="" />
  它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。
  如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。
  注意:它不能改变浏览器地址,刷新的话会导致重复提交


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


5. 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);

下面是其他网友的文章
1. request.getRequestDispatcher("/admin.jsp").forward(request, response);//转发到admin.jsp

2. RequestDispatcher rd=request.getRequestDispatcher("/admin.jsp");
rd.forward(request, response);

3. getServletConfig().getServletContext().getRequestDispatcher("/admin.jsp").forward(request, response);

其它的方法当然可以用html js,的方法,需要jsp输出的,根据需要选择。


    
 
 

您可能感兴趣的文章:

  • jsp中调用java代码小结
  • 关于JSP的一点疑问小结
  • jsp base标签与meta标签学习小结
  • [求助]如何将用jsp写成的动态页面(*.jsp), 转换成静态页面(*.html)???
  • 为何我使用javascript中location'****.jsp'跳到某一页面,jsp页面不重新编译执行
  • 让JSP页面过期, 保证每次JSP页面都是最新的.
  • 在jsp页面加载时自动调用某个特定的servlet,由servlet查询数据库输出WEB页面返回给jsp显示?
  • 在JSP中如何从一个页面转向另一个页面?
  • 输入http://localhost:8080显示欢迎页面但无法显示JSP页面
  • 一JSP网站,统一指定一个errorPage页面,统一处理异常,在指定的errorPage页面中,我想知道具体是哪个页面出错的,即想知道出错页面的具
  • JSP中如何在一页面执行后导入另一页面?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • ?启动jsp页面时,让页面刷新(一次)?
  • JBuilder运行JSP的问题,一次只运行一个JSP页面
  • JSP父页面传参数到子页面及接收示例
  • HTML标签参考手册 iis7站长之家
  • JSP页面如何设置页面的过期?
  • jsp页面中如何打印格式报表(不是打印页面内容)?
  • jsp对页面的大小有否限制,我的页面在60多K之后就断掉了!!!
  • 如何在jsp页面里通过按一个按钮,就关闭这个页面?我急,谢谢。17:00结贴;
  • 当我修改了一个jsp文件之后刷新页面,为什么页面上的内容没有更新的呢?
  • 用JBUILDER如何调试一个JSP工程,一次只运行一个JSP页面?
  • 在JSP中,如何从一个页面跳到另下页面,而同时还能保持Session?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • jsp中文乱码 jsp mysql 乱码的解决方法
  • jsp项目中更改tomcat的默认index.jsp访问路径的方法
  • 没人知道吗?你们在搞jsp开发的时候,遇见过要在jsp页面上写方法的时候吗?告诉我你们的格式,好不好?
  • 基于jsp:included的使用与jsp:param乱码的解决方法
  • 学习jsp+bean,使用jsp:get/setProperty 方法出现错误,请指教
  • JSP中request的getAttribute,setAttribute方法和session的getAttribute,setAttribute方法有什么不同吗?
  • 在Jsp的调试中,现在一般有什么比较有效的方法?
  • jsp页面怎样访问applet里面的方法?
  • (tomcat不认dom编译器 急死了)jsp问题:在bean加main方法,bean好用,在jsp中引用bean中出错
  • jsp页面传参乱码的解决方法
  • 请问大侠,有什么方法能对JSP程序页面自动刷新。
  • 请教JSP中取得绝对路径的方法?
  • 请教jsp数据查询的分页方法?
  • JSP中用于比较相等的equals方法,请指教!
  • jsp中文显示问号问题解决方法
  • jsp 调用SERVLET的POST方法时出错
  • JSP中的繁体中文显示方法,紧急求助!
  • 谁有用Jsp做统计图的方法?
  • jsp页面中显示word/excel格式的文档的方法
  • 求jsp向对方已知IP传GET方法及参数,并分析返回字符串的例子?
  • 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