当前位置:编程学习 > JS >>

EL表达式

1、EL表达式简介
 
(1)EL 全名为Expression Language。EL主要作用:
 
(2)获取数据:
 
EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
 
(3)执行运算:
 
利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
 
(4)获取web开发常用对象
 
EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
 
(5)调用Java方法
 
EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
 
 
2、EL注意事项
 
(1)EL表达式是JSP 2.0(JavaEE1.4)规范中的一门技术 。因此,若想正确解析EL表达式,需使用支持Servlet2.4/JSP2.0技术的WEB服务器。
 
(2)注意:有些Tomcat服务器如不能使用EL表达式
 
(1)升级成tomcat6
 
(2)在JSP中加入<%@ page isELIgnored="false" %>
 
3、EL表达式获取数据
 
(1)使用EL表达式获取数据语法:“${标识符}”
 
(2)EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。 
 
(3)示例:${user}
 
(4)EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如:
 
${user.address.city}
 
${user.list[0]}:访问有序集合某个位置的元素
 
${map.key}  : 获得map集合中指定key的值
 
(5) 和 [ ] 区别
 
(6)结合JSTL的foreach标签,使用EL表达式也可以很轻松迭代各种类型的数组或集合,示例:
 
迭代数组
 
迭代collection类型集合
 
迭代map类型集合
 
(7)${propName}在四个域中搜寻proName属性,输出该值到输出流中
 
${pageScope/requestScope/sessionScope/applicationScope.proName}获取指定域中的属性
 
${attr[0]}获取域中的集合的指定元素
 
${list[0]}获取list中的指定位置元素
 
${map.keyName}获取map中指定键的值
 
${bean.propName}获取javaBean的属性,可以认为是调用了javaBean的getXXX方法,
 
~最重要的一个应用场景:在写路径的时候最好不要把web应用名称写死,java中应该用request.getContextPath去获取。jsp中就用el获取:${pageContext.request.contextPth}
 
~.和[]区别使用点的地方都可以用中括号,如果属性名是数字或包含特殊符号(.-)就必须使用中括号。例子:${map["first.name"]}
 
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 
<%@page import="com.itheima.Person"%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
<html>
 
  <head>
 
  </head>
 
  <body>
 
   <hr><h1>获取常量值进行输出</h1>
 
   ${123.123 }
 
   ${'xxxx' }
 
   ${false }
 
   <hr><h1>获取变量值进行输出,注意只能获取域中的值</h1>
 
   <%
 
   pageContext.setAttribute("name","小昭");
 
   int age = 16;
 
   pageContext.setAttribute("age",age);
 
    %>
 
${name }
 
${age}
 
 
   <hr><h1>获取数组中的数据</h1>
 
   <%
 
   int [] nums = {111,222,333};
 
   pageContext.setAttribute("nums",nums);
 
    %>
 
    ${nums[1] }
 
    
 
   <hr><h1>获取集合中的数据</h1>
 
   <%
 
   List list = new ArrayList();
 
   list.add("芷若妹子");
 
   list.add("金毛狮王谢逊");
 
   list.add("韦一笑");
 
   pageContext.setAttribute("list",list);
 
    %>
 
    ${list[0] }
 
    
 
    
 
   <hr><h1>获取Map中的数据</h1>
 
   在el表达式中使用点号和中括号不一样的地方:
 
   在el中使用中括号的地方都可以使用点号去替代,但是如果中括号中的内容为数字或包含了特殊字符(.-)就必须用中括号不能用点号。
 
   <%
 
   Map map = new HashMap();
 
   map.put("name","奥巴马");
 
   map.put("nick.name","aobama");
 
   map.put("age",55);
 
   map.put("易做图","女");
 
   pageContext.setAttribute("map",map);
 
   pageContext.setAttribute("age","name");
 
    %>
 
   ${map[age] }
 
   ${map["age"] }
 
   ${map.age }
 
   ${map["nick.name"] }
 
   
 
   <hr><h1>获取JavaBean的属性</h1>
 
   <%
 
   Person p = new Person();
 
   p.setName("克林顿");
 
   p.setAge(66);
 
   pageContext.setAttribute("p",p);
 
    %>
 
    ${p.name }
 
    ${p.age }
 
    ${pageContext.request.contextPath }
 
     <a href=" ${pageContext.request.contextPath }/index.jsp">xxx</a>
 
  </body>
 
</html>
 
4、EL表达式执行运算
 
补充:Web开发 , Jsp ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,