EL和JSTL用来替代JSP小脚本,削弱页面编程的灵活度,简化和规范页面编程。
EL的作用
提供复杂表达式(Java对象)
访问一个任意Java对象的属性(比小脚本简化,提供更方便的机制,比如空值默认为空字符串等)
EL的使用环境
EL只能在JSP2.0/Servlet2.4标准的容器内使用,JSTL却可以通过jar文件支持,在JSP1.2/Servlet2.3容器内使用。
基本语法
访问对象
${user.email }
使user必须是放置在某个作用域(比如request)的对象,在作用域中的name为user,并具有email属性。
EL的限制
不能声明变量。需要JSTL或者标准JavaBean Action声明变量。
EL作用域和自动搜索机制
和JSP的4个作用域对应:
pageScope
requestScope
sessionScope
applicationScope
通过作用域和名称指定对象:
${pageScope.pageValue }
如果不指定作用域,EL自动按照由小到大次序查找:
->page->request->session->application->null
访问HTTP参数
替代JSP类似的写法:
<%=request.getParameter(”name”)%>
EL的写法:
${param.name }
访问HTTP请求头部信息
可以通过EL的3个内置对象访问:
header
headerValues
cookie
示例:
Session Id: ${cookie.JSESSIONID.value}
访问初始化参数
访问web.xml中定义的初始化参数:
<context-param> <param-name>siteName</param-name> <param-value>Marshal’s Blog</param-value></context-param>
EL中调用:
${initParam.siteName }
EL操作符
算术运算符: +,-,*,/ …
条件运算符:
${(user.male)?”男”:”女”}
逻辑运算符: &&, ||…
比较运算符: >,<,== …
空操作符: empty
${empty userName }
EL导航符
一般使用“.”符:
{user.email }
也可以用“[]”符:
${user["name"] }
这在属性名称中包含“.”符号时非常有用。
访问集合对象
访问Map,比如Map中有个key为email:
${userMap.email }
访问List, 和数组类似, 只能使用”[]“操作符:
${userList[0] }