关于EL表达式中requestScope和param区别

来源:互联网 发布:提醒事项软件 编辑:程序博客网 时间:2024/05/20 03:08

El 表达式
j2EE软件工程师都知道,
在web开发中有四个作用域分别为
page,request,session,application
${id}表示会从作用域中取得数据。
如果没有在EL表达式中指明它会默认的从小到大寻取。
分别为page-request-session-application.
${requestScope.id}则表示为在request作用域中取的参数为id的值。

${param.id}则表示 由客户端传送过来的,参数名为id的值。
相当于:request.getParamter("id");

今天演示EL表达式的时候发现自己jsp的基础实在是薄弱,在这个很简单的问题上迷惑了很久。

首先在看遇到的问题:

在浏览器地址输入,表示传入一个参数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("test"); %>  </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"),一般是从服务器传递结果到页面,在页面中取出服务器保存的值。

 

参考资料:

el表达式中的${param}

http://topic.csdn.net/u/20090103/15/779af9b8-c3a7-4f3e-82fe-b08bf2630996.html

0 0
原创粉丝点击