為什么第一次點擊商品詳情的時候就會有這次瀏覽的記錄呢?
String list ="";
? ? ? ? ? ? ?
? ? ? ? ? ? ? //從客戶端獲得Cookies集合
? ? ? ? ? ? ? Cookie[] cookies = request.getCookies();
? ? ? ? ? ? ? //遍歷這個Cookies集合
? ? ? ? ? ? ? if(cookies!=null&&cookies.length>0)
? ? ? ? ? ? ? {
? ? ? ? ? ? ?for(Cookie c:cookies)
? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ?if(c.getName().equals("ListViewCookie"))
? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? list = c.getValue();
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ?}
? ? ? ? ?}
? ? ? ? ? ? ??
? ? ? ? ? ? ? list+=request.getParameter("id")+",";
? ? ? ? ? ? ? //如果瀏覽記錄超過1000條,清零.
? ? ? ? ? ? ? String[] arr = list.split(",");
? ? ? ? ? ? ? if(arr!=null&&arr.length>0)
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? if(arr.length>=1000)
? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? list="";
? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? }
? ? ? ? ? ? ? Cookie cookie = new Cookie("ListViewCookie",list);
? ? ? ? ? ? ? response.addCookie(cookie);
按照這代碼的執(zhí)行順序 第一次點擊時list應(yīng)該是為空的呀,為什么就會有這次的瀏覽記錄呢
2015-12-27
我來解釋下:
????????????? String list ="";
????????????? //從客戶端獲得Cookies集合
????????????? Cookie[] cookies = request.getCookies();
????????????? //遍歷這個Cookies集合
???????????? ?
????????????? if(cookies!=null&&cookies.length>0)
????????????? {
?? ?????????????? for(Cookie c:cookies)
?? ?????????????? {
?? ?????????????????? if(c.getName().equals("ListViewCookie"))
?? ?????????????????? {
?? ????????????????????? list = c.getValue();
?? ?????????????????? }
?? ?????????????? }
?? ?????????? }
???????????? ?
????????????? list+=request.getParameter("id")+",";
看到這里的? list+=request.getParameter("id")+",";??? 代碼沒有。 這句話的意思是,先把你當(dāng)前瀏覽的頁面ID加入進(jìn)list中,同時,
????????????? String[] arr = list.split(",");
????????????? if(arr!=null&&arr.length>0)
????????????? {
????????????????? if(arr.length>=1000)
????????????????? {
????????????????????? list="";
????????????????? }
????????????? }
????????????? Cookie cookie = new Cookie("ListViewCookie",list);
????????????? response.addCookie(cookie);
中的 response.addCookie(cookie); 已經(jīng)把它寫入cookie了。所以,接下來的:
????????????? Cookie cookie = new Cookie("ListViewCookie",list);
????????????? response.addCookie(cookie);
???????? ?
????????? %>
????????? <!-- 瀏覽過的商品 -->
????????? <td width="30%" bgcolor="#EEE" align="center">
???????????? <br>
???????????? <b>您瀏覽過的商品</b><br>
???????????? <!-- 循環(huán)開始 -->
???????????? <%
??????????????? ArrayList<Items> itemlist = itemDao.getViewList(list);
??????????????? if(itemlist!=null&&itemlist.size()>0 )
??????????????? {
?????????????????? System.out.println("itemlist.size="+itemlist.size());
?????????????????? for(Items i:itemlist)
?????????????????? {
??????????????????????? ?
???????????? %>
這句代碼就開始將cookie遍歷,但是,cookie在之前已經(jīng)寫入id了,所以瀏覽記錄顯示是晚于cookie寫入的。
這句是原因,不知道你看懂了沒有。
2016-10-30
遍歷的時候,從倒數(shù)第二個開始就好了