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="/error.jsp" %>
<%
if(AssociatorSession.getSession(session)==null)
 response.sendRedirect("/login.jsp");       //如果会员没有登录就跳转到登录页面,
else{ //如果已经登录则提交订单并销毁session中的购物车
Associator associator = new Associator();
associator = AssociatorSession.getSession(session);
String errmsg = "";
errmsg=OrderFormOperation.addOrderForm(request,session);
CartSession.removeSession(session);  //销毁session中的购物车
if(!errmsg.equals(""))
 response.sendRedirect("/error.jsp?errmsg="+errmsg);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
 <Script language=JavaScript>
 alert(" 以上商品已订购,我们会和你及时联系!");
 window.location="../index.jsp";
 </Script>
</body>
</html>
<%}%>

  有问题的代码是这样的

<%@ page contentType="text/html" language="java" import="java.util.*,com.blackCoffee.shop.*,com.blackCoffee.util.*,com.blackCoffee.db.*" %>
<%@ page errorPage="/error.jsp" %>
<%
if(AssociatorSession.getSession(session)==null)
 response.sendRedirect("/login.jsp");       //如果会员没有登录就跳转到登录页面,
//没有else了
Associator associator = new Associator();
associator = AssociatorSession.getSession(session);
String errmsg = "";
errmsg=OrderFormOperation.addOrderForm(request,session);
CartSession.removeSession(session);  //销毁session中的购物车
if(!errmsg.equals(""))
 response.sendRedirect("/error.jsp?errmsg="+errmsg);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
 <Script language=JavaScript>
 alert(" 以上商品已订购,我们会和你及时联系!");
 window.location="../index.jsp";
 </Script>
</body>
</html>
<%//}%>

  请注意到出现问题的是因为没有了else,问题如下:每当不登录就购买物品后,点“订货”提交按钮,本来应该转到登录页面,登录后查看购物车,以前购买的货物应该都在,但是点“订货”提交按钮后,转向登录页面,登录后购物车里没有了。当时出现错误好像是说response.sendRedirect已经发送到客户端,不能改变了,我就在这里折腾了些时间,后来检查代码时发现了这句话CartSession.removeSession(session);

原来if(AssociatorSession.getSession(session)==null)
 response.sendRedirect("/login.jsp");       //如果会员没有登录就跳转到登录页面,

  这句话后面没有else, 所以页面虽然跳转了,但是后面的语句也继续执行了,CartSession.removeSession(session);

  这句清空了购物车,所以才会出错。

  总结:response.sendRedirect跳转后,原页面的语句会继续执行。

时间: 2024-09-28 22:34:38

response.sendRedirect的一点实际用法的相关文章

使用response.sendRedirect的注意事项。

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

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"