EL表达式
1.EL表达式的简介
EL表达式是一种JSP技术,能够代替JSP中原本要用Java语言进行显示的语句,使得代码更容易编写与维护。最基本的语法是${express}。
2. 运算符:2.1. 算数运算符: + - * /(div) %(mod)
2.2. 比较运算符: > < >= <= == !=
2.3. 逻辑运算符: &&(and) ||(or) !(not)
2.4. 空运算符: empty
3.获取值
3.1. el表达式只能从域对象中获取值
3.2. 语法:
3.2.1. ${域名称.键名}:从指定域中获取指定键的值
域名称:
pageScope --> pageContext
requestScope --> request
sessionScope --> session
applicationScope --> application(ServletContext)
举例:在request域中存储了name=张三
获取:${requestScope.name}
3.2.2. ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
3.3. 获取对象、List集合、Map集合的值
3.3.1. 对象:${域名称.键名.属性名}
本质上会去调用对象的getter方法
3.3.2. List集合:${域名称.键名[索引]}
3.3.3. Map集合:
${域名称.键名.key名称}
${域名称.键名["key名称"]}
3. 隐式对象:
el表达式中有11个隐式对象
pageContext:
获取jsp其他八个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录
${域名称.键名.key名称}
${域名称.键名["key名称"]}
3. 隐式对象:
el表达式中有11个隐式对象
pageContext:
获取jsp其他八个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录
4.EL表达式的常规用法
4.1.EL从JavaBean中读取数据
从bean中读取数据时,用点运算符(.)直接像取对象属性一样取得数据。
<% user u = new user("张三",20,“男”); pageContext.setAttribute("stu",u); %> user = ${stu}<br/> score = ${stu.age}<br/> math = ${stu.gender}<br/>
4.2.EL从List中读取数据(在EL表达式中应该使用的是setAttribute的key来作为取值对象)
<% List<Integer> nums = new ArrayList<Integer>(); nums.add(Integer.valueOf("100")); nums.add(200); nums.add(new Integer(300)); pageContext.setAttribute("num",nums); %> first = ${num[0]}<br/> second = ${num[1]}<br/> third = ${num[2]}<br/>
4.3.EL从map中读取数据
<% Map<String,Object> map = new HashMap<String,Object>(); map.put("张三",new user("zhangsan",21,new Score(80,88,90))); map.put("李四",new user("lisi",22,new Score(89,87,96))); map.put("王五",new user("wangwu",23,new Score(60,99,75))); map.put("fruit","banana"); pageContext.setAttribute("map",map); %> 张三 = ${map.张三.score.chinese}<br/> 李四 = ${map.李四.score}<br/> 王五 = ${map.王五}<br/> frit = ${map.fruit}<br/>