EL表达式

EL 全名为Expression Language。EL主要作用:
获取数据:
EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的java对象中获取数据。
执行运算:
利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。
获取web开发常用对象
EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
调用Java方法
EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

使用EL表达式获取数据语法:“${标识符}”
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。

注意:因为EL表达式是从容器找数据,所以数据设好后必须放在容器中。

EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如:
user.address.city {user.list[0]}:访问有序集合某个位置的元素
map.keymapkey {map.value} : 获得map集合中指定value的值

EL表达式可执行的运算包括算数、逻辑、比较、问号表达式,empty运算。

值得一提的是empty运算,如果表达式的值为null或不存在改变量或者是一个包含任何数据的List或Map,empty的值为true;

EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称} :获得对象的引用

这里写图片描述
这里写图片描述

测试headerValues时,如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
测试cookie时,例 cookie.keycookie访cookie {cookie.key.name}或${cookie.key.value}

index.jsp中具体演示的核心代码如下:

 <%
        pageContext.setAttribute("pageName", "page_Jack");
        request.setAttribute("reqName", "req_Jack");
        session.setAttribute("sessName", "sess_Jack");
        application.setAttribute("appName", "app_Jack");
     %>
     <!-- el表达式读取普通变量 -->
     ${pageName },${reqName },${sessName },${appName }<br/>

     <%
        User user = new User();
        user.setAge(24);
        user.setName("Tom");
        pageContext.setAttribute("u", user);
      %>
      <!-- el表达式读取类变量 -->
     ${u}<br/>
     ${u.name },${u.age }<br/>

     <%
        Map<String,Object>map = new HashMap<String,Object>();
        map.put("name", "张三");
        map.put("sex", "男");
        map.put("user",user);
        pageContext.setAttribute("map", map);
      %>
      <!-- el表达式读取map中的数据 -->
      ${map }<br/>
      ${map.name },${map.sex },${map.user.name },${map.user.age }<br/>

      <%
        List list = new ArrayList();
        list.add("张三");
        list.add(user);
        list.add(map);
        session.setAttribute("list", list);
       %>
        <!-- el表达式读取list中的数据 -->
        ${list[0] },${list[1] },${list[1].name },${list[1].age },${list[2].name },
        ${list[2].sex },${list[2].user.name },${list[2].user.age },<br/>
<!-- 从指定的容器中读取数据 -->
    ${pageScope.u},
    ${requestScope.u},
    ${requestScope.m},
    ${sessionScope.list[0]}
    <br/>
    ${header}<br/>
    ${header.host}<br/>
    ${header.cookie}<br/>
    ${cookie.JSESSIONID.value}<br/>
    <br/>
    ${param}<br/>  //演示访问地址:http://localhost:8080/elWeb/?name=Jack&age=21
    ${param.age }<br/> 
    ${paramValues}<br/>
    ${paramValues.name[0]}<br/>
    <br/>
    <a href="${pageContext.request.contextPath}/jsps/aa.jsp"> 跳到另一个页面</a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值