javascript
JSP中getParameter和getAttribute区别
(1)HttpServletRequest類有setAttribute()方法,而沒有setParameter()方法
(2)當(dāng)兩個(gè)Web組件之間為鏈接關(guān)系時(shí),被鏈接的組件通過getParameter()方法來獲得請(qǐng)求參數(shù),
(3)當(dāng)兩個(gè)Web組件之間為轉(zhuǎn)發(fā)關(guān)系時(shí),轉(zhuǎn)發(fā)目標(biāo)組件通過getAttribute()方法來和轉(zhuǎn)發(fā)源組件共享request范圍內(nèi)的數(shù)據(jù)。
一般通過表單和鏈接傳遞的參數(shù)使用getParameter
通過request.setAttribute("name","jerry")的方式賦值的使用request.getAttribute("name")
這個(gè)問題主要是request和session的差別,request范圍較小一些,只是一個(gè)請(qǐng)求,簡(jiǎn)單說就是你在頁面上的一個(gè)操作, request.getParameter()就是從上一個(gè)頁面中的url、form中獲取參數(shù),但如果一個(gè)request涉及多個(gè)類,后面還要取參數(shù),可以用request.setAttribute()和request.getAttribute(),但是當(dāng)結(jié)果輸出之后,request就結(jié)束了。
而session可以跨越很多頁面,可以理解是客戶端同一個(gè)IE窗口發(fā)出的多個(gè)請(qǐng)求。這之間都可以傳遞參數(shù),比如很多網(wǎng)站的用戶登錄都用到了。
getparameter?????? 返回的是string,?????? 用于讀取提交的表單中的值;?????(頁面參數(shù)和字符串)???? 如?id=123之類的。???????????getattribute?????? 返回的是object,需舉行轉(zhuǎn)換,可用setattribute設(shè)置成恣意東西,利用很機(jī)動(dòng),可隨時(shí)用;??常用于servlet 頁面?zhèn)鬟f參數(shù)給jsp?
??????????getparameter()是獲取post/get轉(zhuǎn)達(dá)的參數(shù)值;?
? ——getattribute()是獲取東西容器中的數(shù)據(jù)值;?
? ——getparameter:用于客戶端重定向時(shí),即點(diǎn)擊了鏈接或提交按扭時(shí)傳值用,即用于在用表單或url重定向傳值時(shí)吸取數(shù)據(jù)用。?
? ——getattribute:用于辦事器端重定向時(shí),即在sevlet中利用了forward函數(shù),或struts中利用了 mapping.findforward。getattribute只能收到步伐用setattribute傳過來的值。?
? ——getparameter()是獲取post/get轉(zhuǎn)達(dá)的參數(shù)值;?
? ——getattribute()是獲取session的值;??
????????別的,可以用setattribute,getattribute發(fā)送吸取東西.而getparameter顯然只能傳字符串。??
??????? setattribute?? 是應(yīng)用辦事器把這個(gè)東西放在該頁面所對(duì)應(yīng)的一塊內(nèi)存中去,當(dāng)你的頁面辦事憐惜定向到另一個(gè)頁面時(shí),應(yīng)用辦事器會(huì)把這塊內(nèi)存拷貝另一個(gè)頁面所對(duì)應(yīng)
??????? 的內(nèi)存中如許getattribute就能取得你所設(shè)下的值,固然這種要領(lǐng)可以傳東西。session也一樣,只是東西在內(nèi)存中的生命周期不一樣罷了。?
??????? getparameter只是應(yīng)用辦事器在闡發(fā)你奉上來的request頁面的文本時(shí),取得你設(shè)在表單或url重定向時(shí)的值。??
???個(gè)人見解:
??????當(dāng)用戶把值作為鏈接參數(shù)傳遞給下個(gè)頁面或serve時(shí),其實(shí)啊也就是網(wǎng)頁間傳遞數(shù)據(jù),用 request.getparameter():提取發(fā)送過來的參數(shù)如:本網(wǎng)頁????????
???????????? ?http://community.csdn.net/expe/topic/4633/4633804.xml?temp=.3488123???????? ?request.getparameter("temp")==".3488123"
??????當(dāng)用戶把值放在了request中的一個(gè)屬性時(shí)(request.setAttribute("aa","tt"),"aa"這個(gè)屬性名可以任意取的),用 getAttribute(屬性名)獲取.
request 范圍較小一些,只是一個(gè)請(qǐng)求,簡(jiǎn)單說就是你在頁面上的一個(gè)操作, request.getParameter()就是從上一個(gè)頁面中的url、form中獲取參數(shù)。但如果一個(gè)request涉及多個(gè)類,???????????? 后面還要參數(shù),可以用request.setAttribute()和request.getAttribute(),但是當(dāng)結(jié)果輸出之后,request就結(jié)束了。 ?request.getparameter???:?是用來擔(dān)當(dāng)來自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????????
??????????? 也便是說string?????? hotel_id?????? =?????? request.getparameter("hotel_id");????????
??????????? request.getattribute????????
??????????? 是用來擔(dān)當(dāng)來自servlet的變量或action(著實(shí)action便是特別的 servlet)????????
??????????? 在action中,request.setattribute("ret",ret);????????
??????????? 只能擔(dān)當(dāng)java.lang.object????????
??????????? 也便是說list?????? ret?????? =?????? (list)request.getattribute("ret");????????
??????????? 要是你只用jsp,底子用不到request.getattribute()??
request.getParameter(),request.setAttribute()區(qū)別如下: (1)request.getParameter()取得是通過容器的實(shí)現(xiàn)來取得通過類似post,get等方式傳入的數(shù)據(jù),request.setAttribute()和getAttribute()只是在web容器內(nèi)部流轉(zhuǎn),僅僅是請(qǐng)求處理階段。 (2)request.getParameter()方法傳遞的數(shù)據(jù),會(huì)從Web客戶端傳到Web服務(wù)器端,代表HTTP請(qǐng)求數(shù)據(jù)。request.getParameter()方法返回String類型的數(shù)據(jù)。 request.setAttribute()和getAttribute()方法傳遞的數(shù)據(jù)只會(huì)存在于Web容器內(nèi)部 還有一點(diǎn)就是,HttpServletRequest類有setAttribute()方法,而沒有setParameter()方法。 拿一個(gè)例子來說一下吧,假如兩個(gè)WEB頁面間為鏈接關(guān)系時(shí),就是說要從1.jsp鏈接到2.jsp時(shí),被鏈接的是2.jsp可以通過getParameter()方法來獲得請(qǐng)求參數(shù). 假如1.jsp里有 <form name="form1" method="post" action="2.jsp"> 請(qǐng)輸入用戶姓名:<input type="text" name="username"> <input type="submit" name="Submit" value="提交"> </form>的話在2.jsp中通過request.getParameter("username")方法來獲得請(qǐng)求參數(shù)username: <% String username=request.getParameter("username"); %> *** 但是如果兩個(gè)WEB間為轉(zhuǎn)發(fā)關(guān)系時(shí),轉(zhuǎn)發(fā)目的WEB可以用getAttribute()方法來和轉(zhuǎn)發(fā)源WEB共享request范圍內(nèi)的數(shù)據(jù),也還是說一個(gè)例子吧。 有1.jsp和2.jsp 1.jsp希望向2.jsp傳遞當(dāng)前的用戶名字,如何傳遞這一數(shù)據(jù)呢?先在1.jsp中調(diào)用如下setAttribute()方法: <% String username=request.getParameter("username"); request.setAttribute("username",username); %> <jsp:forward page="2.jsp" /> 在2.jsp中通過getAttribute()方法獲得用戶名字: <% String username=(String)request.getAttribute("username"); %>
轉(zhuǎn)載于:https://www.cnblogs.com/zhwl/p/3166391.html
總結(jié)
以上是生活随笔為你收集整理的JSP中getParameter和getAttribute区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 邮政存定期一年一万多少利息
- 下一篇: gradle idea java ssm