EL表达式

最近心里乱乱的。有时候也该记录点啥。想起啥就写点啥吧。总比一天天这样无所事事的耗下去好。这样有背时代精神呀。

-----------------------------------------------------华丽丽的分割线-------------------------------------------------------------

 

EL(Expression Language)表达式语言是JSP2.0版本中引入的新特性,用于在JSP文件中的数据访问。在JAVA1.4之前是不支持的。

 

先来看一段JSP代码:

 

<%

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

        if(null != user){

 %>

<%=user.getUserName() %>

<% } %>

 

这是一段JSP代码。比较繁锁。而且大量的JSP标签和JAVA程序片,让我们开发和维护都比较困难。再看下EL表达式的写法:

${user.userName}

 

可见,EL表达式大大的简化 了JSP代码。而且也是JSP现在极力推荐的表达式。

${属性/表达式}

例如:${user.name};${20>24}; ${empty user} ; ${2>3?8:5};

 

表达式用点号运算符来访问对象属性。也可以用[]来访问。当然[]也可以用来访问数组

EL表达式的运算符:

 

有算术运算符:+ , - ,* ,/或div,%或mod。

 

关系运算符:==或eq,<或lt,>或gt,!=或ne,<=或le,>=或ge

 

逻辑运算符:&&或and ,||或or,!或not。

empty运算符和条件运算符:a?b:c

 

注意:empty运算符返回true的情况:${empty var}

1、var 变量不存在,即没有被定义。

2、var变量的值为null。

3、变量引用集合set,list,map类型的对象,并且集合对象中不包含任何元素。

另外,empty运算符可以与not(!)一起使用。如:${! empty user.name}

 

---------------------------------------------以上是语法,下面来看EL提供的隐含对象-------------------------------------

在EL表达式中共有11个隐式对象

  • 与作用范围有关的EL隐含对象包含有:pageScope、requestScope、sessionScope和applicationScope
    • 它们可以读取使用JSP内置对象pageContext、request、session以及application的setAttribute()方法所设定的对象的数值-----即getAttribute(String name),却不能取得其他相关信息。
    • 例如,要取得session中储存的一个username属性的值,可以利用下面的方法:session.getAttribute("username")
    • 在EL中则使用下面的方法:${sessionScope.username}
    • 注意:如果没有设定使用EL内置对象的作用范围,则按照pageScope、requestScope、sessionScope和applicationScope的先后顺序读取属性值。
    • 即,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为“”(注意,不是null)。
  • 与输入有关的隐含对象param和paramValues,它们是EL中比较特别的隐含对象。
    • 要取得用户的请求参数时,可以利用下列方法:
      • request.getParameter(String name)
      • request.getParameterValues(String name)
    • 在EL中则可以使用param和paramValues两者来取得数据:
      • ${param.name}
      • ${paramValues.name}------这时可同时使用[]运算符号来读取哪个元素,例如${paramValues.week[0]}
  • 其他隐式对象
    • cookie
      • 用来取得使用者的cookie值,例如在cookie中设定了username属性值,可以使用${cookie.username.value}来取得属性值。
    • header和headerValues
      • 读取请求的头数据,使用header或headerValues内置对象,例如${header[“User-Agent”]},headerValues则用来取得所有的头信息,等价于调用request.getHeaders()方法。
    • initParam
      • initParam用来读取设置在web.xml中的参数值。例如${initParam.repeat},等价于:(String)application.getInitParameter(“repeat”);  或 servletContext.getInitParameter(“repeat”);
    • pageContext
      • pageContext用于取得其他有关用户要求或页面的详细信息
        ${pageContext.request.queryString} 取得请求的参数字符串
        ${pageContext.request.requestURL} 取得请求的URL,不包括参数字符串
        ${pageContext.request.contextPath}         服务的web application 的名称
        ${pageContext.request.method}           取得HTTP 的方法(GET、POST)
        ${pageContext.request.protocol}         取得使用的协议(HTTP/1.1、HTTP/1.0)
        ${pageContext.request.remoteUser}         取得用户名称
        ${pageContext.request.remoteAddr }         取得用户的IP 地址
        ${pageContext.session.new}             判断session 是否为新的
        ${pageContext.session.id}               取得session 的ID
        ${pageContext.servletContext.serverInfo}   取得主机端的服务信息

 

 

 

 

 from :http://blog.csdn.net/zhaoyazhi2129/article/details/8175201

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值