zoukankan      html  css  js  c++  java
  • request getParameter getAttribute

    在浏览器地址输入,表示传入一个参数test,值为123

    http://localhost:8888/Test/index.jsp?test=123


    在index.jsp中尝试使用EL表达式取出,代码如下:

     <body>
        ${test}
     </body>

    发现毫无结果,再使用requestScope尝试取出:

      <body>
        ${requestScope.test}
      </body>

    发现还是毫无结果,感到非常诧异,遂干脆使用java脚本尝试取出。

      <body>
          request.getAttribute(%>
      </body>


    依然无解。

    之后发现,若使用已下代码向request作用域赋值,则用上面代码可以取出

    
        request.setAttribute("test", "123");
     %>

     

    查询资料后发现,使用以下代码可以取出之前的请求参数:
    EL:

      <body>
        ${param.test}
      </body>

    JAVA脚本:

      <body>
          =request.getParameter("test") %>
      </body>

    结论就是:${param.name} 等价于 request.getParamter("name"),一般是从页面或者客户端获取的内容,

         ${requestScope.name} 等价于 request.getAttribute("name"),一般是从服务器段传过来的,可以传到客户端也可以传到服务器里面(即,方法1传到方法2,服务器内部的传输)

     

    pageContext.request是一个具体的对象,在你的http请求过程中存在。 
    requestScope是一个定义, 表明一个http请求的整个声明周期,它只是一个定义而已,不是一个对象。 EL中你可以在这个周期中放置、获取对象。(当然,其实真正的操作也是针对request对象的)。

    requestScope通常是将某个变量或者对象在servlet或者acion中通过request.setAttribute()方法放入到request对象中,然后在页面中使用requestScope来进行数据的显示的
    而request.getparameter则是则是更多的用在servlet或者action中,它的作用是接受表单提交来的数据,比如你的jsp页面中的表单提交的数据。
    两者的区别是:requestScope更多的用于展示页面,从request对象中取出对象或者变量来显示,而request中的对象或者变量也是程序员通过手动的方式request.setAttribute方法来放入request对象中的
    而request.getparameter则更多的应用于后台的方法中,它的参数不是程序员手动设置的,而是由表单来接受用户输入的值会随着用户的请求被放入request对象中。

    request.getParameter 和request.getAttribute
    1.通过地址栏传递的参数只能通过getParameter 接收
    2.getAttribute获取的是Object,getParameter 是String

    *******************************************

    getAttribute是取得jsp setAttribute設定的attribute
    2.parameter得到的是stringattribute得到的是
    object
    3.request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据;request.setAttribute()getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。即request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。

    JSPgetParametergetAttribute有何区别?


    ——说实话,这个问题当初我也困惑很久,我也知道怎么用,可是到底有什么区别,我也不是很清楚,后来找了很多资料才明白。昨天又有一位朋友问我这个问题,想我当初同样也困惑过,于是我就把这个问题贴出来,让同样困惑的朋友解惑。
    ——getParameter得到的都是String类型的。或者是http://a.jsp?id=123中的123,或者是某个表单提交过去的数据。

    ——getAttribute则可以是对象。
    ——getParameter()是获取POST/GET传递的参数值;

    ——getAttribute()是获取对象容器中的数据值;
    ——getParameter:用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用。

    ——getAttribute:用于服务器端重定向时,即在sevlet中使用了forward函数,struts中使用了mapping.findForwardgetAttribute只能收到程序用setAttribute传过来的值。

    ——getParameter()是获取POST/GET传递的参数值;

    ——getAttribute()是获取SESSION的值;

    另外,可以用setAttribute,getAttribute发送接收对象.getParameter显然只能传字符串。

    setAttribute 是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另一个页面时,应用服务器会把这块内存拷贝另一个页面所对应的内存中。这样getAttribute就能取得你所设下的值,当然这种方法可以传对象。session也一样,只是对象在内存中的生命周期不一样而已。

    getParameter只是应用服务器在分析你送上来的request页面的文本时,取得你设在表单或url重定向时的值。

     

    getParameter   返回的是String,   用于读取提交的表单中的值

    ;       
    getAttribute   返回的是Object,需进行转换,可用setAttribute设置成任意对象,使用很灵活,可随时用;

     

     

  • 相关阅读:
    浏览器中包含什么?三个常驻线程?
    TCP粘包和拆包
    TCP有限状态机
    TCP的拥塞控制
    TCP滑动窗口实现流量控制
    http状态码及意义
    OSI七层结构
    浏览器的event loop
    history api
    表单提交的方式
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3804656.html
Copyright © 2011-2022 走看看