一、JSP EL语言定义
E L(Expression Language) 目的:为了使JSP写起来更加简单,代码读起来整齐,获取数据的表达式。
二、JSP EL简介
1、语法结构
${expression},JSP中任何静态部分可以使用
2、[ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来获取数据,数据必须存储在四大域中。例如:
<%pageContext.setAttribute(key,value)> ${key}
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“,和“”。例如:
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3、变量
EL获取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
Page | PageScope.变量/对象.属性 | 当前页 |
request | request.变量/对象.属性 | 1次请求 |
session | session.变量/对象.属性 | 1次会话,浏览器关闭 |
aplication | aplication.变量/对象.属性 | 应用程序级别,服务器关闭 |
三、JSP EL 中的有效表达式
1、不会抛异常
当表达式访问的对象为null的属性时候,不会抛出空指针异常,浏览器显示空白
当数组下标越界的时候也不会抛越界异常
2、自动转换类型
<a href="xx.jsp?count=3">传值</a> ${param.count+20} param相当于<% request.getParameter() > 其中param.count数据类型自动转换为整数型与20相加
<a href="xx.jsp?count=3&count=4">传值</a> ${paramValues.count[0]+20}
3、运算符
算术运算符 | + - * /(div) %(mod) 不支持(++ ——) |
比较运算符 | <(lt) >(gt) ==(eq) <=(le) >=(ge) !=(ne) |
逻辑运算符 | &&(and) ||(or) !(not) |
条件运算符 | ${a>b?a:b}a和b取最大值需要*1转成整数型,否则比较字符串 |
特殊 | empty ${empty null} true 和false |
4、EL可以访问 数组 List Map
四、EL的内置对象(11个)
1、pageContext request session application param paramValues initParam(获取初始化参数,是在web.xml中定义的参数)等