使用response.sendRedirect的注意事项。

redirect|response

首先我们要明白用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是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。

时间: 2024-11-17 11:24:28

使用response.sendRedirect的注意事项。的相关文章

response.sendRedirect的一点实际用法

redirect|response <黑咖啡 原创> 以下是一个购物单提交的jsp页面(正确的) <%@ page contentType="text/html" language="java" import="java.util.*,com.blackCoffee.shop.*,com.blackCoffee.util.*,com.blackCoffee.db.*" %><%@ page errorPage=&qu

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

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

J2EE中RequestDispatcher.forward()和response.sendRedirect()的区别详谈

一.RequestDispatcher.forward() 在服务器端运行.采用采用请求转发,request对象始终存在,不会重新创建,前后页面共享同一个request.重定向后浏览器地址栏URL不变. public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { response.setContentType("text/html

关于response.sendRedirect跳转不到指定的页面

问题描述 代码如下:<%@pagelanguage="java"contentType="text/html;charset=GB18030"pageEncoding="GB18030"%><%@pageimport="com.bjsxt.drp.sysmgr.*"%><%Stringcommand=request.getParameter("command");if(comm

java-为什么response.sendRedirect(url)不能改变地址栏

问题描述 为什么response.sendRedirect(url)不能改变地址栏 在Java文件中写了一个关于页面跳转的response.sendRedirect(url)方法,结果不能正常跳转 解决方案 http://www.jb51.net/article/39596.htm

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

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

response.sendRedirect()跳转页面无法显示

问题描述 出现一个新问题:center_left.jsp,内容是Ext的一个form表单,1url:'servlet/AddQueServlet',具体如下:001<script type="text/javascript">002Ext.require([ '*' ]);003Ext.onReady(function() {//onReady()函数在页面注册多个函数,依次执行004 Ext.QuickTips.init();005 Ext.state.Manager.s

使用response.sendRedirect()无法跳转?

问题描述 下面是我的部分代码<%//当前会员UsersloginUser=(Users)session.getAttribute("loginuser");if(loginUser==null){response.sendRedirect("../index.jsp");}//商品信息ProductManagerpm=newProductManager();ProductProductByMinPrice=pm.getProductByMinPrice();/

一个response.sendRedirect路径的问题

问题描述 想用session对象实现页面传值的问题,前一个页面是session.setAttribute("itemslist",itemslist);response.sendRedirect("Show.jsp");在Show.jsp中用getAttribute可以得到itemslist的值,但是如果改成下面这个response.sendRedirect("http://localhost:8080/ShoppingCart/Show.jsp"