1为什么会出现EL
- 在JSP2.0之后不建议使用JSP表达式和JSP脚本片段,建议使用EL表达式代替JSP表达式,使用JSTL代替JSP脚本片段
2.EL简介
- EL的全称:Expression Language,表达式语言
- EL的格式:${表达式}
- EL主要用来将域对象中的属性输出到页面
- EL表达式默认是全域查找
-
- 先从page域中查找,找到直接返回,找不到再继续在其他域中找
- 如果在application域中也找不到则返回一个空串
- EL为我们提供了四个Scope对象,用来获取指定域中的对象
-
- 这四个Scope对象是将域对象中的域单独拿了出来
- 这四个Scope对象分别是pageScope、requestScope、sessionScope、applicationScope
-
- pageScope
-
- 用来获取page域中的对象
- requestScope
-
- 用来获取request域中的对象
- sessionScope
-
- 用来获取session域中的对象
- applicationScope
-
- 用来获取application域中的对象
- 如果域对象中的属性名比较特殊,可以通过以下方式获取域对象中的值
获取request域中的对象:${requestScope['hello-kitty']}
- 获取JavaBean中的属性值
-
- EL表达式不能直接获取在JSP脚本片段中声明的对象,必须将对象放到域对象中才能获取
- 通过对象.属性名的方式获取JavaBean的属性值,此时是调用了getXXX方法
- 如果通过EL表达式获取的对象的属性还是一个对象,可以一直点下去
<!-- 获取Student中的name属性值 -->
<%
Student stu = new Student(1,"孙悟空",520,new Address(1,"花果山"));
//将stu放到域对象中
request.setAttribute("stu", stu);
%>
${stu.han }
<hr>
<!-- 获取Student中的address属性值 -->
${stu.address.name }
3.EL中的十一个隐含对象
- 一个我们比较熟悉的
-
- pageContext
-
- 类型:PageContext
- 作用:与JSP中的作用一样,一个顶JSP中的九个隐含对象,通过它可以获取JSP中的其他隐含对象
-
- 使用EL表达式获取request对象
${pageContext.request}
-
-
-
- 使用EL表达式获取项目路径
-
-
${pageContext.request.contextPath}
- 四个Scope对象
-
- pageScope
-
- 类型:Map<String , Object>
- 作用:获取page域中的对象
- requestScope
-
- 类型:Map<String , Object>
- 作用:获取request域中的对象
- sessionScope
-
- 类型:Map<String , Object>
- 作用:获取session域中的对象
- application
-
- 类型:Map<String , Object>
- 作用:获取application域中的对象
- 其他六个隐含对象
-
- header
-
- 类型:Map<String , String>
- 作用:获取请求头中的信息
- headValues
-
- 类型:Map<String , String[]>
- 作用:获取请求头中一个键对象多个值的情况
- param
-
- 类型:Map<String , String>
- 作用:获取请求参数
- paramValues
-
- 类型:Map<String , String[]>
- 作用:获取请求参数中一个键对应多个值的情况
- cookie
-
- 类型:Map<String , Cookie>
- 作用:根据cookie的名称获取Cookie对象
- initParam
-
- 类型:Map<String , String>
- 作用:获取当前Web应用的初始化参数
4.EL中的运算
- 在EL表达式中可以直接进行加、减、乘、除等运算
- 在EL表达式中有一个我们常用的运算符:empty
- empty与null有以下不同
-
- 空串时:null返回false;empty返回true
- 空集合时:null返回false;empty返回true
- 我们通常使用empty来判断一个字符串或集合是否为空