Web 编程基础(3)之el表达式

el表达式

el表达式主要是为了简化脚本的书写的复杂,代替<%=…%>

el表达式的作用:

  1. 获取存放在域中的数据
  2. 执行运算
  3. 获取常见的web的对象
  4. 调用java的方法

格式:

${ el 表达式 }

示例展示:

  1. 使用el表达式取出域中的数据

    实例1:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
      <%--在域中放数据--%>
      <%
        pageContext.setAttribute("xingming","zhangsan");
        application.setAttribute("xinmging2","lisi");
      %>
      <%--获取域中的数据--%>
      ${xingming}
      ${xinmging2}
      </body>
    </html>
    

    注意:el表达式和传统的脚本获取数据的区别

    传统脚本的当取不到域中的数据时,会在浏览器会以null展示

    el表达式在取不到域中的数据时,会以空串展示

    当不同的域中存放相同的数据的的键时,可以使用下面的方法获取存放在域中的数据:

    实例2:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
      <%--在域中放数据--%>
      <%
        application.setAttribute("data","aaaa");
        request.setAttribute("data","bbbb");
        session.setAttribute("data","ssss");
        pageContext.setAttribute("data","pppp");
      %>
      ${applicationScope.data}
      ${requestScope.data}
      ${sessionScope.data}
      ${pageScope.data}
      </body>
    </html>
    

  2. 使用el表达式取出数组中的值
    获取角标为0的数组的值

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
     <%
        int arr[]={1,2,3,4,5,6,7};
        pageContext.setAttribute("arrs",arr);
     %>
      
      ${arrs[0]}
      </body>
    </html>
    
  3. 使用el表达式取出集合中的值
    通过角标获取集合中的值

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
     <%
       ArrayList<Integer> list = new ArrayList<>();
       list.add(1);
       list.add(2);
       list.add(3);
       pageContext.setAttribute("list",list);
     %>
      ${list.get(0)}
      </body>
    </html>
    
  4. el表达式支持运算

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
     ${100>10?true:false}
      </body>
    </html>
    
  5. 支持java的语法,使用java对象的方法
    例如下面获取集合的长度

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
     <%
       ArrayList<Integer> list = new ArrayList<>();
       list.add(1);
       list.add(2);
       list.add(3);
       pageContext.setAttribute("list",list);
     %>
      ${list.size()}
      </body>
    </html>
    
  6. 获取双链集合中的指定的值map

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
    <%
      HashMap<String, String> map = new HashMap<>();
      map.put("学生1","张三");
      map.put("学生2","李四");
      map.put("学生3","王五");
      pageContext.setAttribute("map",map);
    %>
      <%--简化的写法--%>
      ${map.学生2}
      <%--正式的写法--%>
      ${map.get("学生1")}
      </body>
    </html>
    
  7. 获取是对象中定义的变量的值

    在普通类定义一个用户实体类

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
    <%
      User user = new User("zhangsan",20);
      pageContext.setAttribute("user",user);
    %>
      ${user.name}
      ${user.age}
      </body>
    </html>
    
  8. 获取存放在数组中的对象的属性

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
    <%
      User user1 = new User("zhangsan",20);
      User user2 = new User("lisi", 23);
      User user3 = new User("wangwu", 24);
      LinkedHashMap<String, User> map = new LinkedHashMap();
      map.put("s001",user1);
      map.put("s002",user2);
      map.put("s003",user3);
      pageContext.setAttribute("map",map);
    %>
      ${map.get("s001").name}
      ${map.get("s001").age}
      </body>
    </html>
    
  9. 判断一个对象是否为空,判断一个容器的长度是否为0

      <%--判断这个容器是否为空--%>
      ${empty map}
      <%--判断这个容器是否不为空--%>
      ${not empty map}
    
  10. el表达式的11个内置对象

    1. pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、haederValues、initParam、cookie
    2. el表达式的内部对象cookie对象
      ${cookie.给cookie起名字.value}
    3. 获取jessionion的值
      ${cookie.JSESSIONID.value}
  11. 通过el表达式获取项目的路径

    ${pageContext.request.contextPath}

    例如:

<a href="${pageContext.request.contextPath }/demo8.jsp"></a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值