el表达式和JSTL标签
el表达式的主要作用:
el表达式的主要作用是替代JSP页面里面的脚本表达式,在jsp页面里面夹杂着脚本会使页面显得杂乱且不美观,实用el表达式可以改善这些弊端。如果说具体的作用,简而言之就是实用el表达式和jstl标签就可以实现Java的效果,包括对象、属性、方法、集合、数组运算以及逻辑。注意jstl标签库是需要下载导入jar包的。
el表达式的语法及使用示例
el表达式获取数据语法:"${标识符}"
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
在上述的四个域中,如果el表达式里面的标识符一样,也就是查询依据一样的情况下,查询顺序是从域范围小到大依次查找,也就是page、request、session、application这个顺序。
<%
request.setAttribute("name","李海柱");
%>
使用EL表达式获取数据:${name}
${name}等同于<%pageContext.findAttribute("name")%>
使用el表达式可以直接对象.属性,需要注意的是这里即使在Hero类里面的age属性是private私有化的也可以在其他jsp页面里面直接获取的原因是因为在Hero里面提供了get/set方法,el表达式的底层通过get、set方法获取的。
<%
Hero hero = new Hero();
p.setAge(12);
request.setAttribute("hero",hero);
%>
使用el表达式可以获取bean的属性:${hero.age}
在jsp页面中,使用el表达式获取list集合中指定位置的数据
<%
Hero h1 = new Hero();
p1.setName("李白");
Hero h2 = new Hero();
p2.setName("韩信");
List<Hero> list = new ArrayList<Hero>();
list.add(h1);
list.add(h2);
request.setAttribute("list",list);
%>
<!-- 取list指定位置的数据 -->
${list[1].name}
也可以迭代集合List集合以及Map集合 需要用到jstl标签(jstl标签里面提供了一些方法、逻辑关系等,包括迭代、if判断等)
注意点:必须把数据传输到域内
jstl标签 <c>...</c>
<!-- 迭代List集合 -->
<c:forEach var="hero" items="${list}">
${hero.name}
</c:forEach>
// 创建Map集合
Map map = new HashMap();
map.put("c","china");
map.put("a","america");
map.put("j","japan");
// 注意必须把数据传输到域内
request.setAttribute("map",map);
<!-- 迭代Map集合 -->
<c:forEach var="country" items="${map}">
${country.key}=${country.value}<br/>
</c:forEach>