EL 表达式之一

EL 表达式之一

1. EL简介

    EL,Expression Lanauage,原本是JSTL1.0中方便存取数据所定义的语言。当时只能在JSTL标签中使用。如

<c:out value="${3+7}">。

   到了JSP2.0以后,EL被正式纳入标准规范之一。因此,要在jsp页面中直接使用EL,容器必须是至少支持Servlet2.4/JSP2.0的,而如Tomcat4.1.29,只支持servlet2.3/JSP1.2,所以不能在jsp页面中直接使用EL。

2. EL语法

    2.1 运算符--.和[]

    ${sessionScope.user.sex}

    ${sessionScope.user["sex"]}

相当于:

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

    String sex = user.getSex();

需要注意的两点:

    1. 当属性名称中有特殊字符,如“_”时,必须使用[].

        ${sessionScope.user.my_name}不正确,应改为$(sessionScope.user["my_name"]);

    2. 使用变量时,必须使用[].

        ${sessionScope.user[data]}. data="name"时,相当于${sessionScope.user["name"]}.但不能使用${sessionScope.user.data}.

    3. 关系运算符,使用${param.password1 == param.password2},不能写成${param.password1} == ${param.password2}

    4. ${empty param.username} = ${param.username == null}判断是否为空或为null。

    2.2 变量

    $(username)

    没有指定范围的时候,会依次在Request,session,Application中查找username,找到就返回不再继续;否则返回null

    2.3 自动类型转换

    ${param.count+10}

相当于:

    String str = request.getParamter("count");

    int count = Integer.ParseInt(str);

    count = count + 10;  

    2.4 隐含对象

      a. 范围相关:pageScore,requestScore,sessionScore,applicationScore

          这4个隐含对象只能用来取得范围属性值,也就是getAttribute(String name),不能取得其他信息比如请求参数或表头信息等。

      b. 输入相关:param,paramValues

          ${param.name} = request.getParameter(String name)

          ${paramValues} = request.getParameterValues(String name),获取复选框值的时候使用。eg:${paramValues.habit[0]},${paramValues.habit[1]}

          <fmt:questEncoding value="GB2312" /> = request.setCharacterEncoding("GB2312")

      c. 其他:        cookie,header,headerValues,initParam,pageContext

         c1.  cookie以key、value的方式将sessionTracking中的内容记录在一个文本文件中。从cookie中获取值,${cookie.username}

         c2.  header存储用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件。包括用户浏览器的版本,用户计算机的区域等相关数据。eg:${header["User-Agent"]}获取用户浏览器版本.同一标头有不同值的话,使用headerValues来获取

         c3.  ${initParam.userid} 从web.xml中设定的值,相当于String userid=(String)application.getInitParameter("userid");

         l<context-param>

         l<param-name>userid</param-name>

         l<param-value>mike</param-value>

         l</context-param>

         l

         c4. 使用${pageContext}获取其他有关用户要求或页面的信息

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

         ${pageContext.request.requestURL}:获取请求的URL,但不包含请求的参数字符串

         ${pageContext.request.contextPath}:服务的web application名称

你可能感兴趣的:(EL 表达式之一)