简述
在MVC开发模式下,JSP主要负责view模块的开发,即主要负责展示数据,很少在里面写java代码。但不可避免地要写java代码的话,我们可以用EL表达式来简化jsp页面上java代码的书写。
EL表达式
EL是Expression language的缩写,用于简化jsp页面中java代码的书写。
语法:${表达式}
jsp是默认支持EL表达式的,如果要忽略EL表达式,那么就要配置jsp中page的isELIgnored="true",或者在EL表达式前面加个/
EL表达式可以用来运算、获取值、隐式对象。
运算
EL表达式支持常见的运算符
算数运算符 | + - * /(div) %(mod) |
比较运算符 | > < >= <= == != |
逻辑运算符 | &&(and) ||(or) !(not) |
除此之外EL表达式还支持特殊的运算符——empty运算符
功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0
获取值
EL获取值的前提是EL表达式只能从域对象中获取值。
语法${域名称.键名} :从指定域中获取指定值
pageScope | pageContext |
requestScope | request |
sessionScope | session |
applicationScope | application(ServletContext) |
例如我们在request域中存储了name = 张三,我们就可以通过${requestScope.name}获取张三这个值
除此之外我们可以直接写${键名},表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
如果获取的键值是对象,则可以使用${域名.键名.属性值}获取该对象的属性,属性值是get方法去掉get并把首字母变为小写获取的
如果值为list集合的,则用${域名.键名[索引]}来获取,如果list集合里存的是对象则可以.属性名获取该索引下的对象的属性
如果值为map集合,则用${域名.键名.key}获取该map对应key的值
隐式对象
EL表达式的隐式对象类似JSP的内置对象,一共有11个,最常用的是pageContext获取request对象然后获取虚拟目录
${pageContext.request.contextPath}:动态获取虚拟目录