第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

請教下Cookie問題。

???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);
if(cookies!=null&&cookies.length>0)
??????????????{
	??????????????for(Cookie?c:cookies)
	??????????????{
	??????????????????if(c.getName().equals("ListViewCookie"))
	??????????????????{
	?????????????????????list?=?c.getValue();
	??????????????????}
	??????????????}
	??????????}
??????????????
??????????????list+=request.getParameter("id")+",";

這段代碼不太懂,c.getName().equals("ListViewCookie")中的“ListViewCookie”在第一次開始遍歷的時候是不存在的對嗎?因為在最后才創(chuàng)建了

?Cookie?cookie?=?new?Cookie("ListViewCookie",list);

這個cookie對象。如果我第一次點擊了id為1的商品

也就是說第一次遍歷的時候 list=“1,”。

等到如果我第二次我點擊了id為2的時候

list=“1,沃特籃球鞋,2”;

是醬紫嗎?

正在回答

6 回答

我建議你實在理不清就這樣理解。?

假設(shè)代碼是這樣執(zhí)行的:

--------------------------------第一次執(zhí)行-------------------------------------------------------

String?list?="";

list+=request.getParameter("id")+","; ? //這里相當(dāng)于就是獲取商品的id值并添加到字符串中

??????????????//如果瀏覽記錄超過1000條,清零.

??????????????String[]?arr?=?list.split(","); ? ??

??????????????if(arr!=null&&arr.length>0)

??????????????{

??????????????????if(arr.length>=1000)?

??????????????????{

??????????????????????list="";

??????????????????}

??????????????}

?//設(shè)置一個cookie,名為ListView,值為list?(而這里的list就是上面的request.getParameter("id")即商品的id)

??????????????Cookie?cookie?=?new?Cookie("ListViewCookie",list);

??????????????response.addCookie(cookie);


--------------------------------第二次執(zhí)行-------------------------------------------------------

?//從客戶端獲得Cookies集合

??????????????Cookie[]?cookies?=?request.getCookies();

??????????????//遍歷這個Cookies集合

??????????????if(cookies!=null&&cookies.length>0)

??????????????{

??????????????????for(Cookie?c:cookies)

??????????????????{

????????????????//匹配是否有名為ListViewCookie的cookie

? ? ? ? ? ? ? ? if(c.getName().equals("ListViewCookie"))?

??????????????????????{

?????????????????????????list?=?c.getValue(); ?//匹配到后獲取cookie的值,覆蓋原來的字符串。

??????????????????????}

??????????????????}

??????????????}

所以有可能你最后獲得的list就是“2,5,6,10,12,”只是商品的id而已,沒有商品的名稱...只用id即可確定某條具體信息。

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕田峪7021683 提問者

好吧,可能是我蠢,有點懂。但是很謝謝你。要是其他人跟我有同樣疑問的,說不定懂了,那我就采納你的答案了。
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Airly 回復(fù) 慕田峪7021683 提問者

剛開始都有個過程,愛鉆牛角尖,我也是這樣,或許可以多看幾遍視頻就懂啦,加油。
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~

我始終覺得你是以為代碼始終就是從上到下執(zhí)行,原本這是代碼的執(zhí)行方式?jīng)]錯,但是第一段代碼并沒有滿足條件,所以會直接執(zhí)行第2段,而下一次執(zhí)行才會執(zhí)行第1段,然后第2段

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕田峪7021683 提問者

我懂,就是第一次不執(zhí)行第一段代碼。 那第二次呢,會執(zhí)行第一段的代碼對吧。那value中的值不應(yīng)該有中文吧list=c.getValue() 不應(yīng)該是list="1,安踏運動鞋2," 應(yīng)該是list="1,2,"
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Airly 回復(fù) 慕田峪7021683 提問者

唉,你為啥老是要把商品的名稱帶進(jìn)去,不需要商品的名稱,只要商品的id就可以了。
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#3

慕田峪7021683 提問者 回復(fù) Airly

那list=c.getValue(); 這段代碼 獲得的值是存儲什么到list中去
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#4

Airly 回復(fù) 慕田峪7021683 提問者

獲得的值是:由很多個商品id+","組成的拼接字符串。 這里相當(dāng)于獲取最新的list覆蓋原來的list,所以可以理解為c.getValue()就是list
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
查看1條回復(fù)

cookie本身是有生命周期的,即有個過期時間。

下面這段代碼的用途是來判斷是否有匹配的cookie,如果有,執(zhí)行這行代碼? ?list?=?c.getValue();

?Cookie[]?cookies?=?request.getCookies();

??????????????//遍歷這個Cookies集合

??????????????if(cookies!=null&&cookies.length>0)

??????????????{

??????????????????for(Cookie?c:cookies)

??????????????????{

??????????????????????if(c.getName().equals("ListViewCookie"))

??????????????????????{

?????????????????????????list?=?c.getValue();

??????????????????????}

??????????????????}

??????????????}

如果沒有,則上面這段代碼將不被執(zhí)行,直接執(zhí)行下面這段代碼

?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í)行的時候是先執(zhí)行的第2段代碼,然后第二次才是執(zhí)行的第1段代碼

---------------------------------------------------------------------------------------------------

至于cookie里面存的值:

舉個例子,當(dāng)我點擊的id為1的商品,?則list=“1,”;

????????????????????????點擊id為2的商品,則list ="1,2,";

因為?list+=request.getParameter("id")+","; 等同于 list = list +?request.getParameter("id")+","

即重新覆蓋原來字符串的意思。


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕田峪7021683 提問者

那可以請問下list = c.getValue();這條語句是保存什么到list當(dāng)中。
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Airly 回復(fù) 慕田峪7021683 提問者

String list =""; list = c.getValue(); 這樣不是保存到了list中?
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#3

Airly 回復(fù) Airly

cookie是鍵值對保存的對吧。 c.getName().equals("ListViewCookie"),這里的c.getName()就是鍵值對的名 而 list = c.getValue();這里的c.getValue()就是鍵值對的值啊。
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#4

Airly 回復(fù) Airly

鍵值對的名及值就是這句代碼體現(xiàn)的。 Cookie cookie = new Cookie("ListViewCookie",list); cookie的名是ListViewCookie,值是list
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#5

Airly 回復(fù) 慕田峪7021683 提問者

不是的。 cookie的名是ListViewCookie,值是list
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
#6

Airly 回復(fù) Airly

而這里的list就是商品的id而已。舉例,這里的list值可能是String list = "2,3,4,5,6,";
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~
查看4條回復(fù)

Cookie[]?cookies?=?request.getCookies();

??????????????//遍歷這個Cookies集合

??????????????if(cookies!=null&&cookies.length>0)

??????????????{

??????????????????for(Cookie?c:cookies)

??????????????????{

??????????????????????if(c.getName().equals("ListViewCookie"))

??????????????????????{

?????????????????????????list?=?c.getValue();

??????????????????????}

??????????????????}

??????????????}else{

????????????????????Cookie?cookie?=?new?Cookie("ListViewCookie",list);

?? ?? ??????????????response.addCookie(cookie);

???????????????? }


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕田峪7021683 提問者

可是老師就是這么寫的耶,而且我運行了也沒錯。。 你這個我運行試試看。 你這么寫的話,只能保存3條記錄。 好神奇
2016-11-22 回復(fù) 有任何疑惑可以回復(fù)我~
#2

aaaaaaaaten

你這么寫的話,每次訪問都要新建cookie,有些是重復(fù)的
2016-11-23 回復(fù) 有任何疑惑可以回復(fù)我~

c.getName().equals("ListViewCookie"),這段代碼是查找ListViewCookie,前面有條件?if(cookies!=null&&cookies.length>0),

Cookie?cookie?=?new?Cookie("ListViewCookie",list); response.addCookie(cookie);

這段代碼應(yīng)該放在前面if語句接else里面。

代碼錯了


1 回復(fù) 有任何疑惑可以回復(fù)我~

不對,第二次的話應(yīng)該是list="1,沃特籃球鞋2,"。

也就是說正確的話應(yīng)該到第二次的時候list="沃特籃球鞋1,安踏運動鞋2"

但還是不懂。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
JAVA遇見HTML——JSP篇
  • 參與學(xué)習(xí)       248277    人
  • 解答問題       3198    個

Java Web入門級教程JSP,帶你輕松的學(xué)習(xí)JSP基礎(chǔ)知識

進(jìn)入課程

請教下Cookie問題。

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號