EL表达式

1.EL表达式简介
EL表达式全名Expression Language,表达式语言。它可以用来在JSP页面中创建
算术表达式,也可以用来创建逻辑表达式。


2.EL表达式的基本语法:

    ${expr},其中$为EL语法中的输出符号,expr为EL有效表达式,它包含在一对大括号内。EL有效表达式可以包含文字、操作符、变量(对象引用)和函数调用等。
    例如:${23+15.28}、${"Hello World"}

3.运算符:
EL表达式使用的运算符就是JAVA的运算符,但其拓展了另外一种表达方式:
除法:/ or div
字符串:== or eq –> equal
不等于:!= or ne not equal
小于:< or lt –> less than
大于:> or gt –> greater than
小于等于: <= or le –> less equal
大于等于:>= or ge –> greater equal
与:&& or and
或:|| or or
非:! or not
字符串是否为空:empty 等价于 “abc” != null && “abc” != “”
无论是哪种表达效果都是一样,但推荐用后者,因为JSP页面
基本结构的是HTML代码,<、>、/ 等符号有可能会产生歧义。


4.EL内置对象
回顾一下JSP的四大作用域对象:pageContext、request、session、application
共同点:都有setAttribute和getAttribute方法,EL表达式也有四个对应的内置对象:pageScope、requestScope、sessionScope、applicationScope。

应用场景之一:

<%-- 使用page取出bean --%>
    ${pageScope.user1}

<%-- 取出bean中的字段值 --%>
    ${pageScope.user1.userID}

注意:取出字段值实际上调用的是Bean中对应的get方法,比如getUserID,在EL表达式中的写法是:userID,去掉get,之后首字母小写。

这种玩法使用其余三个也是可以实现的,要注意的是 jsp:useBean的scope属性要和作用域对象对应上。

EL表达式可以直接写作用域对象的Attribute的键获取其值。就像这样:

        <%
            pageContext.setAttribute("id" , 1);
            request.setAttribute("id" , 2);
        %>
        ${id}

如果不指定作用域对象,会从作用域最低的对象开始搜索。
顺序:pageContext < request < session < application
但不建议这种写法,影响搜索的效率,最好是把作用域加上。

注意:EL的内置对象并不等价于JSP的作用域对象本身,仅仅是作用域相同,
它只能取到setAttribute设置的键值对,代表的也仅仅是这些键值对的集合(Map),并没有别的功能。如果要完全等价,它还有个内置对象也叫做pageContext,那个就是完全等价的。

EL表达式内置了pageContext,可以通过它来获取到JSP的几个作用域对象。

    <%--通过request获取上下文路径--%>
    ${pageContext.request.contextPath}     
    ${pageContext.session.id}

特点: 这些方法到EL表达式中这种写法等价于getId、getContextPath这些方法,
只是写法不一样,其实还是调用的get方法。

param:获取request对象的参数 ?id=1&username=1..
等价于request.getParameter(“id”);

paramValues: 等价于request.getParameterValues(“id”);

header:获取请求头。请求头也是键值对:

${header.Connection}
<%--遇到特殊符号时的写法(万能写法)--%>
${header['Accept-Language']}

headerValues:和paramValues差不多,但请求头里并没有重复的键,
所以没什么用。

Cookie:获取cookie值。cookie.JSESSIONID.value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值