jsp response.sendRedirect不跳转的原因分析及解决_JSP教程
推荐:JSP指令元素(page指令/include指令/taglib指令)复习整理今天复习了JSP指令元素部分,整理了下,跟大家一起分享: 一、page指令: 设定JSP页面的全局属性,该配置作用于整个JSP页面,设置包括静态包含的文件。 %@ page 属性1=属性值1 属性2=属性值2 % 1、language属性:申明所使用的脚本语言种类,目前只有java一种,不排斥以
最近做项目时遇到一个问题,明明加了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;
}
%>
分享:JSP脚本元素和注释复习总结示例今天复习了JSP脚本元素和注释部分,案例写出来,大家自己调试下,整体总结如下, 1、JSP申明语句: %! 申明语句 % 使用申明语句的变量为全局变量,多个用户执行此JSP页面,将共享该变量。 如: 复制代码 代码如下: html head titleJSP Demo/title /head body %! int a
- JSP指令元素(page指令/include指令/taglib指令)复习整理
- JSP脚本元素和注释复习总结示例
- JSP FusionCharts Free显示图表 具体实现
- 网页模板:关于jsp页面使用jstl的异常分析
- JSP页面中文传递参数使用escape编码
- 基于jsp:included的使用与jsp:param乱码的解决方法
- Java Web项目中连接Access数据库的配置方法
- JDBC连接Access数据库的几种方式介绍
- 网站图片路径的问题:绝对路径/虚拟路径
- (jsp/html)网页上嵌入播放器(常用播放器代码整理)
- jsp下显示中文文件名及绝对路径下的图片解决方法
- jsp 连接sql server 2008 连接不上的解决方法
- 相关链接:
- 教程说明:
JSP教程-jsp response.sendRedirect不跳转的原因分析及解决。