EL表达式
2018-06-18 01:52:21来源:未知 阅读 ()
EL表达式的作用
EL用于在不使用脚本、声明、表达式的情况下,在JSP页面中渲染数据
EL使用位置
不能用在指令中,指令在编译时候执行,EL在页面渲染时执行
如:<%@ include%>、<%@ page%>等
可用在HTML、JSP标签、JS、CSS中
EL语法
1.立即执行->在页面渲染时被JSP引擎解析执行(JSP自上而下执行)
${expr}
2.延迟执行->在JSF中使用,在JSP中合法,但是不推荐使用
#{expr}
EL表达式要在执行后产生某个值,不能在表达式中声明变量、执行赋值语句
保留关键字
true、false、null、instanceof->和Java中的关键字意思一样
empty->空返回真;非空返回假 ${empty x}
括号里是对应的操作符,可以替换使用
div( / )、mod( % )、and( && )、or( || )、not( ! )、eq( == )、ne ( != )、It( < )、gt ( > )、le( <= )、ge ( >= )
操作符优先级(自上而下)
字面量
EL中字符串字面量可以用 ' 或 '' 引起来
HashSet<Object>字面量:${ object.method({1,2,'three',4.00,x}) },Set中的元素用 {} 引起来
ArrayList<Object>字面量:${ object.method([1,2,'three',4.00,x]) },List中的元素用 [] 引起来
HashMap<Object,Object>字面量:${ object.method({'one':1,'two':2,'three':x,'list':[1,2.3]}) },Map中的元素用{}引起来
对象属性和方法
Student类,有一个student变量,有一个num属性,num属性提供set、get方法
可以使用${student.num}访问num属性,实际上是调用的getNum()方法
可以使用${student["num"]}访问num属性
可以直接调用对象的方法,${student.toString()}
静态字段、静态方法的访问->lang包下使用类名,其他包使用JSP的page指令导入包或者写出全限定类名
${Integer.MAX_VALUE},访问Integer类中的静态字段MAX_VALUE
${Integer.reverse(24)},访问Integer类中的静态方法reverse
lambla表达式->同java中的用法一致
${v = (a,b)->a+b;v(3,15)},最后的值是18
EL表达式中的作用域变量
JSP中的9个隐式变量:request、response、session、out、application、config、pageContext、page、exception
EL中的11个隐式变量:pageContext、pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、headerValues、cookie、initParam
隐含对象 |
类型 |
说明 |
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)。返回String |
paramValues |
java.util.Map |
如同ServletRequest.getParameterValues(String name)。返回String[] |
header |
java.util.Map |
如同ServletRequest.getHeader(String name)。返回String |
headerValues |
java.util.Map |
如同ServletRequest.getHeaders(String name)。返回String[] |
cookie |
java.util.Map |
如同HttpServletRequest.getCookies() |
initParam |
java.util.Map |
如同ServletContext.getInitParameter(String name)。返回String |
EL解析变量的顺序
1.检查是否隐式变量
2.如果不是隐式变量,EL按照pageContext.getAttribute()、HttpServletRequest.getAttribute()、HttpSession.getAttribute()、ServletContext.getAttribute()的顺序检查是否有符合条件的变量名
3.如果仍未找到,则报错
集合的访问
Map,有一个map引用
${map.username} 或 ${map["username"]}
List,有一个list引用
${list[0]},注意${list.0}是错误的
EL中同样可以使用流操作,只要EL变量是Java数组或者Collection实例,但是不推荐在JSP中这样做
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 学习笔记之Lambda表达式 2020-06-05
- JAVA8 Lambda表达式 2020-05-31
- Lambda表达式用法大比较: Scala和Java 8 2020-05-26
- java 8 stream、lambda表达式对list操作分组、过滤、求和、 2020-05-14
- 为什么要学习数据机构?学习数据结构有什么意义和作用? 2020-05-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash