EL:Expression Language
可以替代JSP页面中的JAVA代码
传统的在 JSP中用Java代码显示数据的弊端:
类型转换 需要处理null 代码参杂(html套Java代码,很乱)
用EL来解决
例如:jsp中:
Student student = (Student)request.getAttribute("student");
out.print(student);
out.print(student.getSno());
out.print(student.getSname());
out.print(student.getAddress());
el:
${requestScope.student}<br/>
${requestScope.student.sno}<br/>
${requestScope.student.sname}<br/>
${requestScope.student.address}<br/>
${域对象.域对象中的属性.属性}
el操作符:
.操作符示例:
${requestScope.student.address}<br/>
[]操作符示例:
${requestScope.student["address"]}<br/>
点操作符 . --使用方便
中括号操作符[] --功能强大:
可以包含特殊字符(. 、-) 比如元素名称叫my-name,${requestScop.student.my-name}<br/>就无法成功
可以获取变量值 ${requestScop.student[address]}<br/> address没加引号,说明是变量
可以访问数组
${requestScope.hobbies[0]}<br/>//访问数组第0给元素
${requestScope.hobbies.0}<br/>//这就不行了
可以访问map属性
示例:
Map<String,Object>map = new HashMap<>();
map.put("cn","中国");
map.put("us","美国");
request.setAttribute("map,map");
${requestScope.map.cn}
el中的>= > || &&这些符号也可以写字母表示
例如:|| :or
empty运算符:判断一个值null,不存在
${empty requestScope[hobbies]}<br/>
如果hobbies这个东西不存在,empty就是true
如果hobbies是null,empty也为true
el表达式的隐式对象(不需要new就能使用的对象,因为jsp底层new过了)
1.作用域访问对象(EL域对象):pageScope requestScope sessionScope applicationScope
如果不指定域对象,则默认会根据 从小到大的顺序 依次取值
例如:现在sessionScope里面有一个值,但你没指定在哪个里面,只写了变量名sessionhhh,他就先在page...里面找,找不到就在request里面找,找不到就在session。。。里面找
2.参数访问对象:获取表单数据(request.getParameter(),request.getParameterValues())
${param} ${paramValues}
3.JSP隐式对象:pageContext
在 jsp中通过pageContext获取其他的隐式对象,el中要使用jsp隐式对象,就可以通过pageContext间接获取