zoukankan      html  css  js  c++  java
  • 初学EL表达式

    EL 全名为Expression Language

    EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构:

    ${sessionScope.user.sex}

    所有EL都是以${为起始、以}为结尾的。上述EL范例的意思是:从Session的范围中,取得

    用户的性别。假若依照之前JSP Scriptlet的写法如下:

    User user = (User)session.getAttribute("user");

    String sex = user.getSex( );

    User是一个对象,Sex是他的一个属性,所以,取对象的值:${范围.变量.属性}

    两者相比较之下,可以发现EL 的语法比传统JSP Scriptlet 更为方便、简洁。

    其中,pageScoperequestScopesessionScopeapplicationScope都是EL 的隐含对象,由它们的名称可以很容易猜出它们所代表的意思,

    例如:${sessionScope.username}是取出Session范围的username 变量。这种写法是不是比之前JSP 的写法:

    String username = (String) session.getAttribute("username");容易、简洁许多.

     

     

    自动转变类型

     

    EL 除了提供方便存取变量的语法之外,它另外一个方便的功能就是:自动转变类型,我们来看下面这个范例:

     

    ${param.count + 20}

     

    假若窗体传来count的值为10时,那么上面的结果为30。之前没接触过JSP 的读者可能会认为上面的例子是理所当然的,但是在JSP 1.2 之中不能这样做,原因是从窗体所传来的值,它们的类型一律是String,所以当你接收之后,必须再将它转为其他类型,如:intfloat 等等,然后才能执行一些数学运算,下面是之前的做法:

     

    String str_count = request.getParameter("count");

     

    int count = Integer.parseInt(str_count);//这里需要把字符型转为整形

    count = count + 20;
    所以,注意不要和java的语法(当字符串和数字用“+”链接时会把数字转换为字符串)搞混淆喽

     

     

    在 EL中则可以使用param和paramValues两者来取得数据。
    ${param.name}
    ${paramValues.name}

     

    这里param 的功能和request.getParameter(String name)相同,而paramValues和
    request.getParameterValues(String name)相同,这里取到的是字符类型的数组,针对复选框情况(一个相同的名字对应多个值)。如果用户填了一个表格,表格名称为username,则我们就可以使用${param.username}来取得用户填入的值。

    pageScope 例如:${pageScope.user.userName} 相当于<%=page.getAttribute("user").getUserName%>
    requestScope 例如:${requestScope.books} 相当于<%=request.getAttribute("books")%>
    sessionScope 例如:${sessionScope.lastURL} 相当于<%=session.getAttribute("lastURL")%>
    applicationScope 例如:${applicationScope.provice} 相当于<%=application.getAttribute("provice")%>

    看到这里,大家应该很明确EL表达式只能通过内置对象取值,也就是只读操作,如果想进行写操作的话就让后台代码去完成,毕竟EL表达式仅仅是视图上的输出标签罢了。

    pageContext

    我们可以使用 ${pageContext}来取得其他有关用户要求或页面的详细信息。下表列出了几个比较常用的部分

     

    ${pageContext.request.queryString}   --- 取得请求的参数字符串

     

    ${pageContext.request.requestURL}  ------ 取得请求的URL,但不包括请求之参数字符串,即servlet的HTTP地址。

     

    ${pageContext.request.contextPath}  -------服务的webapplication的名称

     

    ${pageContext.request.remoteAddr}  --------取得用户的IP地址

     

     

     

     

     

    注意:

           之前经常看到有人说js是客房端的,EL是服务端的,不能在js中使用EL表达式----真是扯淡

           要在javascript中使用El表达式,只需在el表达式两端加上单引号或者双引号即可

           如:

           <script>
                function(){
                alert('${sessionScope.user.name}');  //获取session中user对象的name属性
             }
             </script>
    也就是说只要使用$就要加单引号

     

     

  • 相关阅读:
    STL 清除模板容器 clear.h
    建立ORACLE10G DATA GUARD---&gt;Physical Standby
    WWDC 2014 Session 205/217 Extension 注意事项
    Android 布局管理器
    软件测试的基本方法(五岁以下儿童)单元测试
    HDU 4896 Minimal Spanning Tree(矩阵高速功率)
    泛泰A860(高通公司8064 cpu 1080p) 拂4.4中国民营recovery TWRP2.7.1.2文本(通过刷第三版)
    Android L SDK -- 一些有趣的新功能
    Jquery在线咨询地址
    项目开发录制两个
  • 原文地址:https://www.cnblogs.com/kailing-con/p/4242400.html
Copyright © 2011-2022 走看看