一直对Servlet的几种页面跳转方式,理解的糊里糊涂的,今天在网上搜了一把,找到一遍比较好的,记下来,以后看看。
跳转分两部分,一是发生在servlet,一是在JSP,其实JSP也就是servlet,不过还是有点差异滴。
Servlet:
当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面。
1) redirect 方式
response.sendRedirect("/a.jsp");
页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如:
response.sendRedirect("http://www.ycul.com");
跳转后浏览器地址栏变化。
这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute来传递。
2) forward方式
RequestDispatcher dispatcher = request.getRequestDispatcher("/a.jsp");
dispatcher .forward(request, response);
页面的路径是相对路径。forward方式只能跳转到本web应用中的页面上。
跳转后浏览器地址栏不会变化。
使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute
JSP:
1) response.sendRedirect();
和servlet的response.sendRedirect()方式一样。
此语句前不允许有out.flush(),如果有,会有异常:
java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
跳转后浏览器地址栏变化
如果要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义了;
如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转;
2) response.setHeader("Location","");
此语句前不允许有out.flush(),如果有,页面不会跳转。
跳转后浏览器地址栏变化
此语句后面的语句执行完成后才会跳转
3) <jsp:forward page="" />
此语句前不允许有out.flush(),如果有,会有异常:
java.lang.IllegalStateException: forward() not allowed after buffer has committed.
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)
at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836)
...
注在jsp文件里面<%
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/*.jsp");
rd.forward(request,response);
%>
可以直接完成跳转!!
跳转后浏览器地址栏不变,但是只能跳到当前主机下
此语句后面的语句执行完成后才会跳转
分享到:
相关推荐
jsp与Servlet跳转jsp与Servlet跳转jsp与Servlet跳转,图形并茂
servlet与jsp的有效结合实现信息提交跳转功能
java-web学习demo--最简单的servlet jsp跳转传值java-web学习demo--最简单的servlet jsp跳转传值
jsp和servlet中实现页面跳转的方式实例总结.docx
自己写的servlet和jsp交互,在eclipse上搞得,没在myeclipse上,主要是跳转和内容显示
java五种jsp页面跳转方法详解 2009-08-21 09:06 1. RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到 另外一个Servlet,JSP 或普通HTML...
本文实例总结了jsp和servlet中实现页面跳转的方式。分享给大家供大家参考,具体如下: 假设要求从test1.jsp 跳转到test2.jsp 一. jsp中跳转: 1. 使用RequestDispatcher.forward方法转发 <% ...
jsp与Servlet跳转实例借鉴.pdf
jsp servlet构建的登录注册例子,jsp负责视图部分,含少量Java代码,servlet负责页面跳转,参数传递,调用数据库类(Dbutil.java)进行插入,查询用户操作。
用Jsp,servlet实现的人力资源管理系统;对servlet的跳转有很多的运用。 系统包括: 人员招募 培训与开发 薪酬与福利 考勤与绩效 人事档案 系统设置; 可以放心使用,修改数据库密码请到com.hrm.config里修改;如果...
编写jsp页面实现如下界面效果,然后交给servlet计算矩形的周长和面积,并输出结果。
当用户打开任意页面首先检测当前地址是否在有效的范围内,如果超出范围将跳转到提示页面error.jsp。 (3)设计用户登录验证过滤器,当用户访问发文页面时,要求用户先进行登录,跳转到登录页面。
之前可以从jsp页面跳转到Servlet页面了。今天来实现一个登录页面。 还是先创建一个jsp命名为login.jsp。 在jsp页面创建两个文本框和一个登录按钮 代码如下 登录页面 用户名: 密码: 我们再新建一个...
如果你是初次接触jsp和servlet,这个就是你的不二之选,里面没有无关的代码,有链接数据库的,JSP传递数据给servlet处理的,还有servlet控制页面跳转的,绝对不可多得啊
Servlet:用于验证数据、实例化JavaBean、调用Dao连接数据库、控制页面的跳转 Servlet过滤器(filter):能够在一个Request到达servlet之前预处理request,也可以在离开servlet时处理response Servlet监听器:给web中...
Servlet+Jsp实现简单的登陆,HttpSession session = request.getSession();
直接进入TestAjax就可以自动找到欢迎页面。
jsp获取当前URL绝对路径.ziw JSP页面跳转的五种方法.ziw servlet 获取客户端请求的路径 得到站点的绝对地址.ziw 强制页面刷新,防止被服务器缓存.ziw
之所以发出来就是因为我做了比较详细的注释,很适合初学者的学习,条例清晰,简单易懂。