jsp response.sendRedirect不跳转的原因分析及解决

最近做项目时遇到一个问题,明明加了response.sendRedirect() ,系统也执行了,但是它就是不跳转;最后在网上找到原因如下:

首先我们要明白用response.sendRedirect做转向的原理,它其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化。
用<jsp:forward page=""/>则不同,它是直接在server做的,浏览器并不知道,也不和浏览器打交道,这从浏览器的地址并不变化可以看出。

所以使用response.sendRedirect时就需要注意以下两点:

1、在使用response.sendRedirect时,前面不能有HTML输出。

这 并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说JSP  SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的 HTML输出也是允许的。
如果报错说,“一些信息已经被submitted”(原文忘了),那么,你就要注意看了,前面是不是有过多的HTML输出了。

2、在response.sendRedirect之后,应该紧跟一句return;

我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。

<%@ include file="/page/checkLogin.jsp" %>这个放在要验证的页面的第一句。

checkLogin.jsp 内容是通过看session 里面有没登陆用户的内容来判断是否登录, 如果没有,那么跳转到登陆页面:

复制代码 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
if (session.getAttribute("userinfo") == null) {

response.sendRedirect(url);

return;
}
%>

 

时间: 2024-08-04 13:10:15

jsp response.sendRedirect不跳转的原因分析及解决的相关文章

jsp response.sendRedirect不跳转的原因分析及解决_JSP编程

最近做项目时遇到一个问题,明明加了response.sendRedirect() ,系统也执行了,但是它就是不跳转;最后在网上找到原因如下: 首先我们要明白用response.sendRedirect做转向的原理,它其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化. 用<jsp:forward page=""/>则不同,它是直接在server做的,浏览器并不知道,也不和浏览器

ajax动态为a标签href赋值不执行跳转的原因分析及解决_AJAX相关

由于一中考评系统要加入一个新的功能"调查问卷",我想沿用别人做好的调查问卷,用别人的有一个好处就是:人家做的专业,界面美化等非常人性化,但是它需要你每次设置完调查问卷后发布一下网址,客户端访问的每次都是变动的地址. 客户端每次点击"调查问卷",就会跳转到相应页面:  点击"调查问卷"即进入调查问卷页面:  我使用a 标签,每次访问管理员提交的"调查问卷" 复制代码 代码如下: <li><a href=&quo

ajax动态为a标签href赋值不执行跳转的原因分析及解决

由于一中考评系统要加入一个新的功能"调查问卷",我想沿用别人做好的调查问卷,用别人的有一个好处就是:人家做的专业,界面美化等非常人性化,但是它需要你每次设置完调查问卷后发布一下网址,客户端访问的每次都是变动的地址. 客户端每次点击"调查问卷",就会跳转到相应页面:   点击"调查问卷"即进入调查问卷页面:   我使用a 标签,每次访问管理员提交的"调查问卷" 复制代码 代码如下: <li><a href=&q

后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法_AngularJS

1.问题: 后端接收不到AngularJs中$http.post发送的数据,总是显示为null 示例代码: $http.post(/admin/KeyValue/GetListByPage, { pageindex: 1, pagesize: 8 }) .success(function(){ alert("Mr靖"); }); 代码没有错,但是在后台却接收不到数据,这是为什么呢? 用火狐监控:参数是JSON格式 用谷歌监控:传参方式是request payload 可以发现传参方式是

PHP Header失效的原因分析及解决方法

在PHP中用header("location:test.php")进行跳转要注意以下几点: 1.location和":"号间不能有空格,否则会出错. 2.在用header前不能有任何的输出,包括include的页面中标签"?>"后不能有空格!! 3.header后的PHP代码还会被执行. 续: 问题:header函数前输入内容 一般来说在header函数前不能输出html内容,类似的还有setcookie() 和 session 函数,这些

引起网站被降权的四点原因分析及解决方法

网站被降权,是仅次于网站被K的比较严重的事情,如果网站被降权了,在百度domain网站域名不在首位,关键词排名下降.相信这个判断方法大家都知道,我就不废话了,直接奔今天的话题,引起网站被降权的四点原因分析及解决办法: 一 .服务器不稳定或打开太慢造成的.服务器不稳定,导致网站总是打不开.买服务器,一要看速度,而要看稳定性,做国内的最好买国内的服务器,国外的服务器普遍没有国内的服务器访问速度快,有的人嫌备案麻烦,就用国外的服务器,其实如果不是快速备案,走正常的备案流程,网站内容不违法,网站的备案不

win7蓝屏的原因分析及解决方法

蓝屏很多时候都是突然发生的,大多数是发生在你玩游戏的时候.很多时候是由于CPU一下子处理不过来,或者电脑脑脾气了.像中毒.中木马之类的蓝屏现在已经很好很好了,当然除非你的电脑是裸机,这才有可能. 1 如果是在玩游戏或者电脑弄很多东西的时候,蓝屏而且只有一.两次,当然你如果下次还开那么多东西,那么肯定是再次蓝屏了. 一般情况下都是由于CPU超频,或者内存不足,你可以买条大的内存装上去,基本上就没问题了.也有的时候是你电脑太热了导致CPU一直超频,然后蓝屏了. 2 有的时候也有可能是一些软件的不兼容

电脑中无法打开网页并提示堆栈溢出的原因分析及解决方法

  电脑中无法打开网页并提示堆栈溢出的原因分析及解决方法 1.函数调用层次过深,每调用一次,函数的参数.局部变量等信息就压一次栈; 2.局部静态变量体积太大. 解决方法: 1.按win+r打开运行,输入cmd,并按回车; 2.打开命令提示符后,分别输入并执行以下命令: regsvr32 atl.dll regsvr32 shdocvw.dll regsvr32 urlmon.dll regsvr32 browseui.dll regsvr32 oleaut32.dll regsvr32 shel

Win7蓝牙驱动安装失败的原因分析与解决方法

  蓝牙是一种支持设备短距离通信的无线电技术,现在不管是手机还是电脑都已经普遍的使用蓝牙功能了.如果Win7系统电脑没有安装蓝牙驱动的话,是需要安装后才能使用的.最近,有用户在安装蓝牙驱动的时候,发现安装失败.怎么办?出现这样的问题要怎么解决?现在就和大家说一下Win7蓝牙驱动安装失败的原因分析与解决方法. 步骤如下: 一.原因分析: 优化软件将系统INF文件夹自带文件误删了. 二.解决方法: 1.进入C盘系统分区的Windowsinf目录,查看是否有"bth.inf"文件,备注:如果