EL表达式简介
- Expression Language
- 使用EL表达式获取数据语法:“${标识符}”
EL表达式的作用
获取数据:
–EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(例如:某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
执行运算:
- 利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。如:${user==null}
- 当使用算数运算符==等于号==比较两个对象时候,首先比较的是 两个对象是不是同一个对象,如果是那么返回true,如果不是,那么 使用equals方法进行比较,
- 如果是用==小于,大于号==比较两个对象,如果对象没有实现Comparable接口,返回false,如果实现了,按照实现的规则进行比较
获取web开发常用对象
- EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
调用Java方法
- EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
EL是jsp内置的表达式语言
- jsp2.0之后,不让再使用Java脚本,而是使用el表达式和动态标签来代替Java脚本
- EL替代的是<%=…%>,只能用来输出,不能用来设置
EL表达式来读取四大域
- ${xxx } ,全域查找名为xxx的属性,从小到大一次寻找,如果不存在,输出空字符串,而不是null
- pageScope.xxx {requestScope.xxx }, session.xxx {application.xxx }
- 实例:使用EL表达式获取属性
javaBean 导航
- 在使用EL表达式获取属性的时候, 可以直接.属性名来获取属性
- 不需要向Java代码一样,调用get方法获取
- 实例:javaBean导航
EL可以输出的东西都在这11个内置对象中
- 其中10个是map,pageContext不是map,他是pageContext类型,这个对象可以获取其他九个对象
- ==pageScope==
- 获取pageContext域属性,相当于pageContext.getAttribute(“xxx”)
- ==requestScope==
- 获取request域属性,相当于request.getAttribute(“xxx”)
- ==sessionScope==
- 获取session域属性,相当于session.getAttribute(“xxx”)
- ==applicationScope==
- 获取application域属性,相当于application.getAttribute(“xxx”)
- ==param==
- 对应参数,它是一个Map,其中key是参数,value是参数值,适用于单值的参数,相当于request.getParameter(“xxx”)
- ==paramValues==
- 对应参数,她是一个Map,其中key是参数,value是多个参数值,适用于多值的参数,相当于request.getParameterValues(“xxx”)
- ==header==
- 对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值的请求头,相当于request.getHeader(“xxx”)
- ==headerValues==
- 对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值的请求头,相当于request.getHeaders(“xxx”)
==initParam==
- 获取web.xml中context-param>内的参数,${ initParam.xxx},xxx就是param-name>标签内的值,进而得到param-value>中的值
<context-param> <param-name>xxx</param-name> <param-value>xxx</param-value> </context-param>
- 获取web.xml中context-param>内的参数,${ initParam.xxx},xxx就是param-name>标签内的值,进而得到param-value>中的值
- ==cookie==
- 用于获取cookie,Map
EL 函数库
- 使用EL函数库的步骤
- 导入jstl jar包
- 在jsp页面中导入函数库 : <%@taglib uri=”http://java.sun.com/jsp/jstl/functions” prefix=”fn”%>
- prefix 表示前缀,可以自己定义
- uri 函数库的路径
- 调用EL函数库的方法
- 格式: prefix:method(params)例如: {fn:length(list)}
- 常用的方法
自定义EL函数
- 开发函数处理类,这个类中的方法是静态方法,自定义的每一个 函数对应一个着类中的方法
- 建立tld文件,定义函数表达式
- 在web.xml文件中配置(这一步可以不做)
- 在jsp页面导入标签