在jsp中应用EL表达式取内置对象的值
2015-09-24 17:05
393 查看
一、为何使用EL表达式?
在MVC体系结构中,JSP页面只是用来显示数据,但它不能直接对隐式对象中某对象的属性进行显示,需要配合Scriptlet才能显示数据。
如果在JSP页面中使用EL表达式将大大简化JSP页面中的Java代码,在配合JSP标准动作,JSTL,可达到真正的JSP无脚本。
二、概念
EL(Expression Language)表达式语言,语法:${表达式}。
例如:${"Hello"}则在JSP页面输出Hello,相当于JSP脚本中的<%="Hello"%>,在EL表达式中的“'”和“"”功能是一样的,表示一个字符串。
在JSP页面中我们可以禁用EL表达式,需要配置page指令的isELIgnored属性,属性值若为true则支持EL表达式,若为false则禁用表达式,默认情况下是支持EL表达式的。
三、从隐式对象中获得数据
我们知道内置对象:application、session、request、page
在el中,内置对象被封装为:applicationScope、sessionScope、requestScope、pageScope
.
是我们最常用的,作用相当于执行Bean中的get方法。
问题来了: SP和EL中 pageContext.request 和 requestScope 的区别?
回答: pageContext.request是一个具体的对象,在你的http请求过程中存在。
requestScope是一个Map,这个Map中存放了在request作用域中的属性键值对,就这么简单而已,它不是request对象,而是request对象属性的封装,pageContext.request才是真正的request对象。
EL中你可以在这个周期中放置、获取对象。(当然,其实真正的操作也是针对request对象的)。
比如${requestScope.a},其实就是要表明我告诉jsp要到requestScope这个声明周期中获取对象a。而背后的实现就是从request.getAttribute("a"),然后根据表达式得到相应的a对象。
使用:
pageScope
例如:${pageScope.user.userName}相当于<%=page.getAttribute("user").getUserName%>
requestScope
例如:${requestScope.books}
相当于<%=request.getAttribute("books")%>
sessionScope
例如:${sessionScope.lastURL}相当于<%=session.getAttribute("lastURL")%>
${sessionScope.user.userName}意思是:在会话中得到名称为user的Bean对象,通过“.”运算符执行getUserName();方法,返回存放在Bean中的用户名属性的值。
applicationScope
例如:${applicationScope.provice}相当于<%=application.getAttribute("provice")%>
或者访问JSP页面中的内置对象:
pageContext
例如:${pageContext.request}在EL表达式中我们是不能直接使用JSP页面的内置对象,但可以是用pageContext间接得到这些内置对象,再来使用。
四、从请求头获得数据
header
例如:${header.referer}得到请求过来的URL
五、EL运算
1.算术运算符
注意:在EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。若出现${'a'+'b'}则会出现异常。
例如:${6+6}
-
例如:${4-3}
*
例如:${4*3}
/
例如:${9/3}
2.关系运算符
>例如:${8>9}
>=例如:${45>=9}
<例如:${4<9}
<=例如:${9<=8}
==
例如:${4==4}
!=
例如:${4!=3}
3.逻辑运算符
&&例如:${false && false}
||
例如:${true || false}
!
例如:${!true}相当于${false}
4.三元运算符
? :
例如:${3>2?'是':'不是'}
5:在EL表达式中还有一些特殊运算符:
empty
判断EL表达式中的表达式是否为空,例如:${empty sessionScope.user}
在MVC体系结构中,JSP页面只是用来显示数据,但它不能直接对隐式对象中某对象的属性进行显示,需要配合Scriptlet才能显示数据。
如果在JSP页面中使用EL表达式将大大简化JSP页面中的Java代码,在配合JSP标准动作,JSTL,可达到真正的JSP无脚本。
二、概念
EL(Expression Language)表达式语言,语法:${表达式}。
例如:${"Hello"}则在JSP页面输出Hello,相当于JSP脚本中的<%="Hello"%>,在EL表达式中的“'”和“"”功能是一样的,表示一个字符串。
在JSP页面中我们可以禁用EL表达式,需要配置page指令的isELIgnored属性,属性值若为true则支持EL表达式,若为false则禁用表达式,默认情况下是支持EL表达式的。
三、从隐式对象中获得数据
我们知道内置对象:application、session、request、page
在el中,内置对象被封装为:applicationScope、sessionScope、requestScope、pageScope
.
是我们最常用的,作用相当于执行Bean中的get方法。
问题来了: SP和EL中 pageContext.request 和 requestScope 的区别?
回答: pageContext.request是一个具体的对象,在你的http请求过程中存在。
requestScope是一个Map,这个Map中存放了在request作用域中的属性键值对,就这么简单而已,它不是request对象,而是request对象属性的封装,pageContext.request才是真正的request对象。
EL中你可以在这个周期中放置、获取对象。(当然,其实真正的操作也是针对request对象的)。
比如${requestScope.a},其实就是要表明我告诉jsp要到requestScope这个声明周期中获取对象a。而背后的实现就是从request.getAttribute("a"),然后根据表达式得到相应的a对象。
使用:
pageScope
例如:${pageScope.user.userName}相当于<%=page.getAttribute("user").getUserName%>
requestScope
例如:${requestScope.books}
相当于<%=request.getAttribute("books")%>
sessionScope
例如:${sessionScope.lastURL}相当于<%=session.getAttribute("lastURL")%>
${sessionScope.user.userName}意思是:在会话中得到名称为user的Bean对象,通过“.”运算符执行getUserName();方法,返回存放在Bean中的用户名属性的值。
applicationScope
例如:${applicationScope.provice}相当于<%=application.getAttribute("provice")%>
或者访问JSP页面中的内置对象:
pageContext
例如:${pageContext.request}在EL表达式中我们是不能直接使用JSP页面的内置对象,但可以是用pageContext间接得到这些内置对象,再来使用。
四、从请求头获得数据
header
例如:${header.referer}得到请求过来的URL
五、EL运算
1.算术运算符
注意:在EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。若出现${'a'+'b'}则会出现异常。
例如:${6+6}
-
例如:${4-3}
*
例如:${4*3}
/
例如:${9/3}
2.关系运算符
>例如:${8>9}
>=例如:${45>=9}
<例如:${4<9}
<=例如:${9<=8}
==
例如:${4==4}
!=
例如:${4!=3}
3.逻辑运算符
&&例如:${false && false}
||
例如:${true || false}
!
例如:${!true}相当于${false}
4.三元运算符
? :
例如:${3>2?'是':'不是'}
5:在EL表达式中还有一些特殊运算符:
empty
判断EL表达式中的表达式是否为空,例如:${empty sessionScope.user}
相关文章推荐
- DFS 2676POJSudoku数独
- JSTL 核心标签库 使用
- 【js】获得项目路径
- Json对象与Json字符串
- js中相等性问题
- JS与Native交互
- 将String格式XML转换成JSON
- JS模拟实现Select效果代码
- [转] javascript对数组的操作
- js 通过身份证识别生日、年龄、性别
- JS设计模式-单例模式
- js判断页面出现滚动条
- AJAX跨域请求之JSONP获取JSON数据
- 工作中用到的Web技术
- JSApi分享
- JavaScript:隐式原型
- js中substr,substring,indexOf,lastIndexOf的用法小结
- JS中通过方法名字符串调用方法
- JS基于面向对象实现的拖拽库实例
- JavaScript:prototype原型