JSP应用技巧:实现三种页面跳转方式的比较

js|比较|技巧|页面

使用JSP大约有下列三种跳转方式:

1. response.sendRedirect();
2. response.setHeader("Location","");
3. <jsp:forward page="" />

经过试验得到下面的一些规则:

一. 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的操作已经无意义了;

如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转;

二. response.setHeader("Location","")

此语句前不允许有out.flush(),如果有,页面不会跳转。

跳转后浏览器地址栏变化

此语句后面的语句执行完成后才会跳转

三. <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)
 ...

跳转后浏览器地址栏不变,但是只能跳到当前主机下

此语句后面的语句执行完成后才会跳转

时间: 2024-09-20 06:03:03

JSP应用技巧:实现三种页面跳转方式的比较的相关文章

jsp三种页面跳转方式的比较

使用JSP大约有下列三种跳转方式: 1. response.sendRedirect(); 2. response.setHeader("Location",""); 3. 经过试验得到下面的一些规则: 一. response.sendRedirect() 此语句前不允许有out.flush(),如果有,会有异常: java.lang.IllegalStateException: Cant sendRedirect() after data has committe

springMVC 几种页面跳转方式

前面已经了解了Controller的几种配置方式 今天主要写一下响应界面跳转的几种方式 1.在注解的方式中 1.1通过HttpServletResponse的API直接输出(不需要配置渲染器) controller类的主要代码 @Controller public class RequestController{ @RequestMapping("/resp") public void handleRequest(HttpServletRequest req, HttpServletR

javascript中几种页面跳转方式

  我们把这些方式分为两组   第一组 ①window.location.assign("http://xy.com");②window.location.href = "http://xy.com";③window.location = "http://xy.com"; 在使用②③其实在设置URL的时候自动调用了①方法.我们最常用的是②. 使用该组方式跳转浏览器历史中都会生成一条新记录,因此用户就可以点击"后退"按钮.  

网站界面从传统显示屏转到手机屏幕三种可用的迁移方式

传统网站都是以显示器屏幕为基准设计,然而随着手机互联网的普及,越来越多传统网站开始向手机屏幕迁移,本文将讨论三种这个过程实现步骤 由于手机终端纷繁复杂,各种分辨率的屏幕,各种适配不同机型的特殊规则,都对手机网站的设计提出了更多的要求.大屏幕上已有的网站向小屏幕的设备上迁移,是需要经过一些调整的,今天就来探讨三种可用的迁移方式. 拍扁式 手风琴式 棋盘式 一. 第一种 拍扁式 这种形式最简单,也是目前web迁移到wap采用的最多的一种形式,就是把主流的1:2:1三栏布局的web网页拍扁成一个线性的

java servlet 几种页面跳转的方法_java

Servlet: 当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面. 1) redirect 方式 response.sendRedirect("/a.jsp"); 页面的路径是相对路径.sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如: response.sendRedirect("http://www.jb51.net"); 跳转后浏览器地址栏变化. 这种方式要传值出去的话,只能在url中带param

ASP技巧:三种禁用FileSystemObject组件的方法

filesystemobject|技巧|禁用 众所周知,FileSystemObject组件的强大功能及破坏性是它屡屡被免费主页 提供商(那些支持ASP)的禁用的原因,我整理了一下,本来只找到两种方法,后来 被某人一刺激,硬是想到第三种不为人所知的方法,呵呵,也不知道是不是这样的. 第一种:用RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll(win98路径)来注销该组 件.此方法过于狠毒,属于同归于尽的方法,大家都没得用,是下招 第二种:修改Progid的值,在A

浅谈合理利用三种页面类型 提高站点的收录

  站内的页面类型已经演化为三种,分别是静态页面.动态页面和伪静态页面.有点优化基础的人都了解,静态页面是对搜索引擎最友好的页面类型,因此这一类的页面也是最容易被搜索引擎收录的.事实真的是如此吗?笔者认为答案未必,笔者认为效果最好的就是三者合理利用,因为这三者免不了都有各自的优缺点.只有在对的地方使用他们才可以发挥出最好的效果. 一:静态页面 静态页面一直是被认为最好优化的页面,却是也是如此,相对与动态页面,静态页面更对搜索引擎更加的友好,但是我们也不能忽视一个大的问题,那就是静态页面所占用的空

SQL Server三种导入导出数据方式比较

当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理:调用命令行工具bcp处理数据:使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式的比

JSP入门初级教程之实现页面跳转

js|教程|页面 JSP中使用jsp forward Action来实现页面的跳转功能. 语法: <jsp:forward page="{relativeURL|<%= expression %>}"/> 或<jsp:forward page="{relativeURL|<%= expression %>}"><jsp:param name="parameterName"value="