EL表达式
一、EL表达式
EL(Expression Language)目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在JSP中简化表达式的方法,让JSP的代码更加简化。
禁用 EL 计算的语法为(页面中):<%@ page isELIgnored =“true|false” %>
或者web.xml(全局)
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
二、EL中的11个隐式对象
隐式对象 | 类型 | 说明 |
---|---|---|
pageContext | javax.servlet.ServletContext | 表示此JSP的PageContext |
pageScope | java.util.Map | 取得Page范围的属性名称所对应的值 |
requestScope | java.util.Map | 取得Request范围的属性名称所对应的值 |
sessionScope | java.util.Map | 取得Session范围的属性名称所对应的值 |
applicationScope | java.util.Map | 取得Application范围的属性名称所对应的值 |
param | java.util.Map | 如同ServletRequest.getParameter(String name) |
paramValues | java.util.Map | 如同ServletRequest.getParameterValues(String name) |
header | java.util.Map | 如同ServletRequest.getHeader(String name) |
headerValues | java.util.Map | 如同ServletRequest.getHeaders(String name) |
cookie | java.util.Map | 如同HttpServletRequest.getCookies() |
initParam | java.util.Map | 如同ServletContext.getInitParameter(String name) |
三、EL表达式的作用
3.1运算符
+ - * / div 加减乘除
操作符 | 描述 | 操作符 | 描述 |
---|---|---|---|
+ | 加 | > gt | 测试是否大于 |
- | 减 | <= le | 测试是否小于等于 |
* | 乘 | >= ge | 测试是否大于等于 |
/ div | 除 | && and | 测试逻辑与 |
% mod | 取模 | || or | 测试逻辑或 |
== eq | 测试是否相等 | ! not | 测试取反 |
!= ne | 测试是否不等 | empty | 测试是否空值 |
< lt | 测试是否小于 | . [] | 取值 |
3.2参数中取值
可以访问参数中取值(上一页面的表单或查询字符串的参数)。用法如下:
${param . name} 相当于request.getParameter (name)
${paramValues. name} 相当于 request.getParamterValues(name)
3.3四个作用域中的存储数据
${pageScope .objectName. attributeName} 或者 ${pageScope .objectName[attributeName]}
${requestScope. objectName. attributeName} 或者 ${requestScope.objectName[attributeName]}
${sessionScope. objectName. attributeName} 或者 ${sessionScope.objectName[attributeName]}
${applicationScope. objectName. attributeName} 或者 ${applicationScope.objectName[attributeName]}
其中4个作用域对象pageScope 、requestScope、sessionScope、applicationScope可以省略,会依次从前往后获取。
取值既可以用.号也可以用[]取值,如果要取的属性值中有特殊符号如.或者-,则一定要使用[]的方式。
如 u s e r . M y − N a m e 应 当 改 为 { user. My-Name}应当改为 user.My−Name应当改为{user[“My-Name”]}
3.4获取请求头中属性值
将请求头名称映射到单个字符串头值,其中header为EL中的隐式对象。如:
${header.host} 相当于request.getHeader(“host”)
${header[“cache-control”]} 相当于request.getHeader(“cache-control”)
将请求头名称映射到一个数值数组,其中的headerValues为EL中的隐式对象。如:
${headerValues. name} 相当于 request.getHeaderValues(name)
3.5获取cookie中的属性值
${cookie. name .value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使 用 ${headerValues. name} 表达式。如:
${cookie.JSESSIONID.value}
3.6获取初始化参数值
将上下文初始化参数名称映射到单个值,其中initParam为EL中的隐式对象。如:
${initParam.encoding}
前提是在web中配置初始化参数
<context-param>
<param-name>encoding</param-name >
<param-value>utf-8</param-value >
</context-param>
3.7JSP隐式对象
JSP 页的上下文,它可以用于访问 JSP 隐式对象。通过pageContext可以访问除自身以外的其它8个JSP隐式对象。
${pageContext.request}
${pageContext.response }
${pageContext.session }
${pageContext.exception}
${pageContext.page}
${pageContext.out}
${pageContext.servletConfig}
${pageContext.servletContext}