EL 11个内置对象
JSP开发人员可以在EL表达式中使用EL隐式对象,而不用任何显式的编码或声明。语法如下:
${隐式对象名} <!-- 获取EL隐式对象的引用 -->
在JSP页面中,可以使用JSP脚本来 <% ... %> 访问JSP隐式对象(9个)。但是在免脚本的JSP页面中则不可能访问这些JSP隐式对象,因此EL提供了一组自己的隐式对象(11个)来访问不同的对象。
EL隐式对象 | 类型 | 说明 |
pageContext | javax.servlet.jsp.PageContext | |
initParam | java.util.Map | 包含所有环境初始化参数,key是参数名,value是参数值 |
param | java.util.Map | 包含所有请求参数,key是参数名,value是指定参数名的第一个参数值 |
paramValues | java.util.Map | 包含所有请求参数,key是参数名,value是指定参数名的所有参数值组成的字符串数组 |
header | java.util.Map | 包含请求标题,key是标题名,value是指定标题名称的第一个标题 |
headerValues | java.util.Map | 包含请求标题,key是标题名,value是指定标题名称的所有标题组成的字符串数组 |
cookie | java.util.Map | 包含当前请求对象中的所有cookie,key是cookie名称,value是cookie值 |
pageScope | java.util.Map | 包含了当前页面范围内的所有属性,key是属性名,value是属性值 |
requestScope | java.util.Map | 包含了当前HttpServletRequest对象中的所有属性,key是属性名,value是属性值 |
sessionScope | java.util.Map | 包含了当前HttpSession对象中的所有属性,key是属性名,value是属性值 |
applicationScope | java.util.Map | 包含了当前ServletContext对象中的所有属性,key是属性名,value是属性值 |
pageContext对象
pageContext对象跟JSP中的隐式对象pageContext相同,表示当前JSP页面的 javax.servlet.jsp.PageContext,在EL中使用该对象可以获取其他的JSP隐式对象。
${pageContext.request} <!-- 获取JSP的内置对象 request --> ${pageContext.response} <!-- 获取JSP的内置对象 response --> ${pageContext.out} <!-- 获取JSP的内置对象 out --> ${pageContext.servletConfig} <!-- 获取JSP的内置对象 config --> ${pageContext.page} <!-- 获取JSP的内置对象 page--> ${pageContext} <!-- 获取JSP的内置对象 pageContext--> ${pageContext.session} <!-- 获取JSP的内置对象 session--> ${pageContext.servletContext} <!-- 获取JSP的内置对象 application--> ${pageContext.exception} <!-- 获取JSP的内置对象 exception-->
initparam对象
访问初始化参数的隐式对象,用于获取上下文参数(即初始化参数)的值
${initParam["password"]} <!-- 获取名为password的初始化参数的值 -->
param对象 和 paramValues对象
用于获取请求参数的值,param对象只能获取请求参数的第一个参数值。如果两个请求参数同名,则只能访问到第一个参数的值;params对象用于获取一个请求参数的多个值,返回所有值的字符串数组
${param["userName"]} <!-- 获取请求参数userName的第一个值--> ${paramValues["selectedOptions"][0]} <!-- 获取请求参数selectedOptions的第一个值 --> ${paramValues["selectedOptions"][0]} <!-- 获取请求参数selectedOptions的第二个值 -->
header对象 和 headerValues对象
用于获取请求头部分的相关信息,header对象获取请求头中标题的第一个值,headerValues对象获取请求头中标题的所有值,返回一个字符串数组
${header["accept-language"]}
${headerValues["accept-language"][0]}
cookie对象
可以用来获取一个cookie
${cookie["jseesionid"]["value"]} <!-- 获取jsseionid的cookie值 --> ${cookie.jssessionid.path} <!-- 获取jsessionid的cookie的路径 -->
pageScope对象、requestScope对象、sessionScope对象、applicationScope对象
用于获取不同作用域范围内的属性值。
有界对象也可以通过没有范围的EL表达式获取。此时,JSP容器将返回PageContext、ServletRequest、HttpSession、ServletContext中第一个同名的对象,执行顺序是从最小范围到最大范围。
EL隐式对象的特点
1)EL只能获取对象的属性,不能改写,也不能直接调用方法。
2)EL中的字符串既可以使用双引号也可以使用单引号,类似于HTML
3)EL表达式在计算时会将字符串转换成数值(null --> 0)
4)EL输出null时用空串(“”)代替
5)EL不能访问局部变量,只能访问作用域中的属性
6)EL中的empty运算符将“”是为null
7)EL中比较字符串内容使用==