JSP中getParameter和getAttribute差别

    添加时间:2013-7-2 点击量:

    (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       返回的是string,       用于读取提交的表单中的值;     (页面参数和字符串)     如?id=123之类的。 
              getattribute      
    返回的是object,需举办转换,可用setattribute设置成任意器材,哄骗很灵活,可随时用;  常用于servlet
    页面传递参数给jsp 
              getparameter()是获取post/get传达的参数值; 
     
    ——getattribute()是获取器材容器中的数据值; 
     
    ——getparameter:用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用。 
     
    ——getattribute:用于就事器端重定向时,即在sevlet中哄骗了forward函数,或struts中哄骗了
    mapping.findforward。getattribute只能收到法度用setattribute传过来的值。 
     
    ——getparameter()是获取post
    /get传达的参数值; 
     
    ——getattribute()是获取session的值;  
            此外,可以用setattribute,getattribute发送接收器材.而getparameter显然只能传字符串。  
           
    setattribute  
    是应用就事器把这个器材放在该页面所对应的一块内存中去,当你的页面就事矜恤定向到另一个页面时,应用就事器会把这块内存拷贝另一个页面所对应
           
    的内存中如许getattribute就能取得你所设下的值,固然这种方法可以传器材。session也一样,只是器材在内存中的生命周期不一样罢了。 

           
    getparameter只是应用就事器在解析你奉上来的request页面的文本时,取得你设在表单或url重定向时的值。  

       
    小我见地:

          当用户把值作为链接参数传递给下个页面或serve时,其实啊也就是网页间传递数据,用
    request.getparameter():提取发送过来的参数如:本网页        
                  http://community.csdn.net/expe/topic/4633/4633804.xml?temp=.3488123        
     request.getparameter(temp==.3488123


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


          request 局限较小一些,只是一个恳求,简单说就是你在页面上的一个操纵,
    request.getParameter()就是从上一个页面中的url、form中获取参数。但若是一个request涉及多个类,
                
    后面还要参数,可以用request.setAttribute()和request.getAttribute(),然则当成果输出之后,request就停止了。

     

         request.getparameter   : 是用来经受来自get方法或post方法的参数        
                        
    <form       method=post>        
                        
    <form      
    method
    =get>        
                        
    <a      
    href
    =1.jsp?id=1>ok</a>        
               
    只能经受java.lang.string        
                也便是说string       hotel_id      
    =      
    request.getparameter(
    hotel_id);        
               
    request.getattribute        
               
    是用来经受来自servlet的变量或action(实在action便是特此外 servlet)        
               
    在action中,request.setattribute(
    ret,ret);        
               
    只能经受java.lang.object        
                也便是说list       ret      
    =      
    (list)request.getattribute(
    ret);        
               
    如果你只用jsp,根蒂根基用不到request.getattribute()  

    request.getParameter(),request.setAttribute()差别如下:
    (1)request.getParameter()取得是经由过程容器的实现来取得经由过程类似post,get等体式格式传入的数据,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是恳求处理惩罚阶段。

    (2)request.getParameter()办法传递的数据,会从Web客户端传到Web办事器端,代表HTTP恳求数据。request.getParameter()办法返回String类型的数据。

    request.setAttribute()和getAttribute()办法传递的数据只会存在于Web容器内部

    还有一点就是,HttpServletRequest类有setAttribute()办法,而没有setParameter()办法。
    拿一个例子来说一下吧,假如两个WEB页面间为链接关系时,就是说要从1.jsp链接到2.jsp时,被链接的是2.jsp可以经由过程getParameter()办法来获得恳求参数.
    假如1.jsp里有

    <form name=form1 method=post action=2.jsp>
    请输入用户姓名:<input type=text name=username>
    <input type=submit name=Submit value=提交>
    </form>的话在2.jsp中经由过程request.getParameter(username)办法来获得恳求参数username:

    <% String username=request.getParameter(username); %>


    然则若是两个WEB间为转发关系时,转发目标WEB可以用getAttribute()办法来和转来源WEB共享request局限内的数据,也还是说一个例子吧。

    有1.jsp和2.jsp
    1.jsp向2.jsp传递当前的用户名字,如何传递这一数据呢?先在1.jsp中调用如下setAttribute()办法:
    <%
    String username=request.getParameter(username);

    request.setAttribute(username,username);

    %>
    <jsp:forward page=2.jsp />

    在2.jsp中经由过程getAttribute()办法获得用户名字:
    <% String username=(String)request.getAttribute(username); %>












    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: