JSP2.0 最重要的特性就是EL表达式语言,JSP用户可以用它来访问应用程序数据。
表达式的语言
- EL表达式以 {expression}
关键字
以下关键字,它们不能作为标识符:
and eq gt true instanceof or ne le false empty not lt ge null div mod
[] 和 . 运算符
注意两者都可以访问一个带有属性的对象,但是 .不能访问不是有效的 java变量名
例如 ${header[accept-language]} 只能是这样访问
访问 JavaBean
利用 . 或者 [] 运算符,都可以访问 bean 的属性,其结构如下:
{beanName.propertyName}
EL隐式对象
EL可以提供一组它自己的隐式对象来访问不同的对象
pageContext
pageContext对象表示当前JSP 页面的 javax.servlet.jsp.PageContext 它包含了所有的JSP隐式对象
例如,可以利用以下任意一个表达式来获取当前的 ServletRequest
{pageContext.request.method}
initParam
隐式对象 InitParam可以获取上下文参数的值,例如,为了获取 password的上下文参数值,可以使用以下表达式 ${initParam.password}
param
隐式对象 param用于获取请求参数值。这个对象表示一个包含所有请求参数的Map。例如要获取 userName的值,可以使用以下任意一种表达式。
${param.userName}
paramValues
利用隐式对象 paramValues 可以获取一个请求参数的多个值。这个对象表示一个包含所有请求参数,并以参数名称作为key的Map。每个key的值是一个字符串数组
${paramValues.selectedOptions[0]}
header
隐式对象 header表示一个包含所有请求标题的 Map。为了获取header值,要利用header名称作为key。例如,为了获取accept-language这个header值,可以使用以下表达式:
${header["accept-language"]}
注意 隐式对象 headerValues表示一个包含所有请求head,并且以 header名称作为key的Map。但是它返回的是一个字符串数组
Cookie
隐式对象cookie可以用来获取一个Cookie。这个对象表示当前 HttpServletRequest中所有cookie的值。例如,为了获取名为jessionid的cookie值,要使用以下表达式:
{cookie.jessionid.path}
EL运算符
- 四则运算符 + - * 除法可以使用/ 或者 div 取模可以使用 % 或者 mod
- 逻辑运算符 且 &&(and) 或 (|| 和 or) 非(! 和 not)
- 关系运算符 (== 和 eq) 不等于(!= 和 ne) 大于(>和gt) 大于或等于(>= 和 ge) 小于或等于(<= 和 le)
小于(<和lt) 小于或等于 (<= 和le) - 三目运算符 ${statement?A:B}
- empty 用来检查一个值是否为 Null 或者empty ${empty X} 如果 X为null或者是一个长度为0的字符串,那么该表达式将返回 true ,如果是一个空 Map、空数组或者空集合,它也将返回 True, 否则返回False
写里一个例子
定义 两个 JavaBean
image.png image.png
编写一个 Servlet
image.png
写一个 jsp页面
image.png
最后访问浏览器 http://localhost:8080/employee
似不似很简单呀,这就是传说中的EL表达式啦
总结:
- EL表达式的基本语法 ${expression}
- 访问属性对象 和JavaBean的两种方式 {bean["beanName"]}
- EL 里面的隐式对象 好多呀,自己往上面看呗
- EL里面的算术 逻辑运算 empty 运算符
感谢阅读,喜欢点个赞呗 !
网友评论