(1)HttpServletRequest類(lèi)有setAttribute()方法,而沒(méi)有setParameter()方法
(2)當(dāng)兩個(gè)Web組件之間為鏈接關(guān)系時(shí),被鏈接的組件通過(guò)getParameter()方法來(lái)獲得請(qǐng)求參數(shù),
(3)當(dāng)兩個(gè)Web組件之間為轉(zhuǎn)發(fā)關(guān)系時(shí),轉(zhuǎn)發(fā)目標(biāo)組件通過(guò)getAttribute()方法來(lái)和轉(zhuǎn)發(fā)源組件共享request范圍內(nèi)的數(shù)據(jù)。
一般通過(guò)表單和鏈接傳遞的參數(shù)使用getParameter
通過(guò)request.setAttribute("name","jerry")的方式賦值的使用request.getAttribute("name")
這個(gè)問(wèn)題主要是request和session的差別,request范圍較小一些,只是一個(gè)請(qǐng)求,簡(jiǎn)單說(shuō)就是你在頁(yè)面上的一個(gè)操作, request.getParameter()就是從上一個(gè)頁(yè)面中的url、form中獲取參數(shù),但如果一個(gè)request涉及多個(gè)類(lèi),后面還要取參數(shù),可以用request.setAttribute()和request.getAttribute(),但是當(dāng)結(jié)果輸出之后,request就結(jié)束了。
而session可以跨越很多頁(yè)面,可以理解是客戶(hù)端同一個(gè)IE窗口發(fā)出的多個(gè)請(qǐng)求。這之間都可以傳遞參數(shù),比如很多網(wǎng)站的用戶(hù)登錄都用到了。
getparameter 返回的是string, 用于讀取提交的表單中的值; (頁(yè)面參數(shù)和字符串) 如?id=123之類(lèi)的。
getattribute 返回的是object,需舉行轉(zhuǎn)換,可用setattribute設(shè)置成恣意東西,利用很機(jī)動(dòng),可隨時(shí)用; 常用于servlet頁(yè)面?zhèn)鬟f參數(shù)給jsp
getparameter()是獲取post/get轉(zhuǎn)達(dá)的參數(shù)值;
——getattribute()是獲取東西容器中的數(shù)據(jù)值;
——getparameter:用于客戶(hù)端重定向時(shí),即點(diǎn)擊了鏈接或提交按扭時(shí)傳值用,即用于在用表單或url重定向傳值時(shí)吸取數(shù)據(jù)用。
——getattribute:用于辦事器端重定向時(shí),即在sevlet中利用了forward函數(shù),或struts中利用了 mapping.findforward。getattribute只能收到步伐用setattribute傳過(guò)來(lái)的值。
——getparameter()是獲取post/get轉(zhuǎn)達(dá)的參數(shù)值;
——getattribute()是獲取session的值;
別的,可以用setattribute,getattribute發(fā)送吸取東西.而getparameter顯然只能傳字符串。
setattribute 是應(yīng)用辦事器把這個(gè)東西放在該頁(yè)面所對(duì)應(yīng)的一塊內(nèi)存中去,當(dāng)你的頁(yè)面辦事憐惜定向到另一個(gè)頁(yè)面時(shí),應(yīng)用辦事器會(huì)把這塊內(nèi)存拷貝另一個(gè)頁(yè)面所對(duì)應(yīng)
的內(nèi)存中如許getattribute就能取得你所設(shè)下的值,固然這種要領(lǐng)可以傳東西。session也一樣,只是東西在內(nèi)存中的生命周期不一樣罷了。
getparameter只是應(yīng)用辦事器在闡發(fā)你奉上來(lái)的request頁(yè)面的文本時(shí),取得你設(shè)在表單或url重定向時(shí)的值。
個(gè)人見(jiàn)解:
當(dāng)用戶(hù)把值作為鏈接參數(shù)傳遞給下個(gè)頁(yè)面或serve時(shí),其實(shí)啊也就是網(wǎng)頁(yè)間傳遞數(shù)據(jù),用 request.getparameter():提取發(fā)送過(guò)來(lái)的參數(shù)如:本網(wǎng)頁(yè)
http://community.csdn.net/expe/topic/4633/4633804.xml?temp=.3488123 request.getparameter("temp")==".3488123"
當(dāng)用戶(hù)把值放在了request中的一個(gè)屬性時(shí)(request.setAttribute("aa","tt"),"aa"這個(gè)屬性名可以任意取的),用getAttribute(屬性名)獲取.
request范圍較小一些,只是一個(gè)請(qǐng)求,簡(jiǎn)單說(shuō)就是你在頁(yè)面上的一個(gè)操作, request.getParameter()就是從上一個(gè)頁(yè)面中的url、form中獲取參數(shù)。但如果一個(gè)request涉及多個(gè)類(lèi),
后面還要參數(shù),可以用request.setAttribute()和request.getAttribute(),但是當(dāng)結(jié)果輸出之后,request就結(jié)束了。
request.getparameter : 是用來(lái)?yè)?dān)當(dāng)來(lái)自get要領(lǐng)或post要領(lǐng)的參數(shù)
<form method=post>
<form method=get>
<a href="1.jsp?id=1">ok</a>
只能擔(dān)當(dāng)java.lang.string
也便是說(shuō)string hotel_id = request.getparameter("hotel_id");
request.getattribute
是用來(lái)?yè)?dān)當(dāng)來(lái)自servlet的變量或action(著實(shí)action便是特別的servlet)
在action中,request.setattribute("ret",ret);
只能擔(dān)當(dāng)java.lang.object
也便是說(shuō)list ret = (list)request.getattribute("ret");
要是你只用jsp,底子用不到request.getattribute()