日期:2014-05-20  浏览次数:20626 次

getParameter与getAttribute的区别,请详细介绍下
最近在看书的过程中,发现在获得页面信息的时候我们有时候用request.getParameter()方法,有时候又使用pageContext.getAttributesScope(),以及getAttribute(),这三者的区别和联系,想让牛人们深入的讲解一下

这三者在什么情况下使用

这三者的区别又是什么

谢谢

------解决方案--------------------

(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 


(2)当两个Web组件之间为链接关系时,被链接的组件通过getParameter()方法来获得请求参数, 


(3)当两个Web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。 


一般通过表单和链接传递的参数使用getParameter 

通过request.setAttribute("name","jerry")的方式赋值的使用request.getAttribute("name") 


这个问题主要是request和session的差别,request范围较小一些,只是一个请求,简单说就是你在页面上的一个操作, request.getParameter()就是从上一个页面中的url、form中获取参数,但如果一个request涉及多个类,后面还要取参数,可以用request.setAttribute()和request.getAttribute(),但是当结果输出之后,request就结束了。 

而session可以跨越很多页面,可以理解是客户端同一个IE窗口发出的多个请求。这之间都可以传递参数,比如很多网站的用户登录都用到了。 


一般可以用getParameter得到页面参数。。。字符串。。。 

getAttribute()可以得到对象。。。 


getParameter可以得到页面传来的参数如?id=123之类的。 

getAttribute()常用于servlet页面传递参数给jsp 



个人见解: 

当用户把值作为链接参数传递给下个页面或serve时,用getParameter()获取.如aa.jsp?id=1;还有表单的提交. 

当用户把值放在了request中的一个属性时(request.setAttribute("aa","tt"),"aa"这个属性名可以任意取的),用getAttribute(属性名)获取. 


request范围较小一些,只是一个请求,简单说就是你在页面上的一个操作, request.getParameter()就是从上一个页面中的url、form中获取参数。但如果一个request涉及多个类,后面还要取参数,可以用request.setAttribute()和request.getAttribute(),但是当结果输出之后,request就结束了。 

而session可以跨越很多页面。范围大于request。

------解决方案--------------------
getAttributesScope返回的是范围吧 比如request session application什么的
------解决方案--------------------
从浏览器提交给服务器的数据(通常是表单数据),在服务器端用getParameter拿到,
而服务器方面计算完毕后,通过setAttribute方法设置到request作用范围内,然后在jsp中可以获取。
------解决方案--------------------
request.geParameter():
Returns the value of a request parameter as a String, or null if the parameter does not exist. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data. 

getAttribute():
Returns the value of the named attribute as an Object, or null if no attribute of the given name exists. 
Attributes can be set two ways. The servlet container may set attributes to make available custom information about a request. For example, for requests made using HTTPS, the attribute javax.servlet.request.X509Certificate can be used to retrieve information on the certificate of the client. Attributes can also be set programatically using setAttribute(java.lang.String, java.lang.Object). This allows information to be embedded into a request before a RequestDispatcher call. 

API上复制过来的。呵呵。不懂的话可以联系我。