<黑咖啡 原創(chuàng)>
  以下是一個(gè)購物單提交的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");       //如果會(huì)員沒有登錄就跳轉(zhuǎn)到登錄頁面,
else{ //如果已經(jīng)登錄則提交訂單并銷毀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(" 以上商品已訂購,我們會(huì)和你及時(shí)聯(lián)系!");
 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");       //如果會(huì)員沒有登錄就跳轉(zhuǎn)到登錄頁面,
//沒有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(" 以上商品已訂購,我們會(huì)和你及時(shí)聯(lián)系!");
 window.location="../index.jsp";
 </script> 
</body>
</html>
<%//}%>
請注意到出現(xiàn)問題的是因?yàn)闆]有了else,問題如下:每當(dāng)不登錄就購買物品后,點(diǎn)“訂貨”提交按鈕,本來應(yīng)該轉(zhuǎn)到登錄頁面,登錄后查看購物車,以前購買的貨物應(yīng)該都在,但是點(diǎn)“訂貨”提交按鈕后,轉(zhuǎn)向登錄頁面,登錄后購物車?yán)餂]有了。當(dāng)時(shí)出現(xiàn)錯(cuò)誤好像是說response.sendredirect已經(jīng)發(fā)送到客戶端,不能改變了,我就在這里折騰了些時(shí)間,后來檢查代碼時(shí)發(fā)現(xiàn)了這句話cartsession.removesession(session);
原來if(associatorsession.getsession(session)==null)
 response.sendredirect("/login.jsp");       //如果會(huì)員沒有登錄就跳轉(zhuǎn)到登錄頁面,
這句話后面沒有else, 所以頁面雖然跳轉(zhuǎn)了,但是后面的語句也繼續(xù)執(zhí)行了,cartsession.removesession(session);
這句清空了購物車,所以才會(huì)出錯(cuò)。
總結(jié):response.sendredirect跳轉(zhuǎn)后,原頁面的語句會(huì)繼續(xù)執(zhí)行。
新聞熱點(diǎn)
疑難解答
圖片精選