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

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

1. response.sendRedirect();
2. response.setHeader("Location","");
3.

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

一. response.sendRedirect()

此语句前不允许有out.flush(),如果有,会有异常:

java.lang.IllegalStateException: Cant sendRedirect() after data has committed to the client.
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...

跳转后浏览器地址栏变化

如果要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,不过对response的操作已无意义了;

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

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

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

跳转后浏览器地址栏变化

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

三.

此语句前不允许有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-10-05 21:56:28

jsp三种页面跳转方式的比较的相关文章

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

js|比较|技巧|页面 使用JSP大约有下列三种跳转方式: 1. response.sendRedirect();2. response.setHeader("Location","");3. <jsp:forward page="" /> 经过试验得到下面的一些规则: 一. response.sendRedirect() 此语句前不允许有out.flush(),如果有,会有异常: java.lang.IllegalStateExce

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网页拍扁成一个线性的

jsp用action页面跳转session的值丢失

问题描述 jsp用action页面跳转session的值丢失 三个代码如下,第一个用form表单上传一个值 <%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="GB2312"%> <%request.setCharacterEncoding("gb2312"); %> <!DOCTYPE ht

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

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

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

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

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

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

Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面

一.看下内部原理 简化后的认证过程分为7步: 用户访问网站,打开了一个链接(origin url). 请求发送给服务器,服务器判断用户请求了受保护的资源. 由于用户没有登录,服务器重定向到登录页面 填写表单,点击登录 浏览器将用户名密码以表单形式发送给服务器 服务器验证用户名密码.成功,进入到下一步.否则要求用户重新认证(第三步) 服务器对用户拥有的权限(角色)判定: 有权限,重定向到origin url; 权限不足,返回状态码403("forbidden"). 从第3步,我们可以知道