JSTL 和 EL
EL表达式 Expression Language
语法${作用域中的值}
使用EL表达式时,需要在page标签中写上isELIgnored="false",否则EL表达式不生效。
EL表达式在底层寻址对象时会加上get并将属性名首字母大写。而且很多java程序在底层寻址对象时都是找到对象的get,set方法并非去找改对象。
EL表达式查询范围:从小范围到大范围,如果不同作用域有同名的变量昵称,以最小的作用域为准。
EL表达式获取普通属性
1.向作用域中添加一个普通属性,
<% request.setAttribute("uname","李明"); %>
2.使用EL表达式获取作用域的key。
${uname}
EL表达式获取对象属性
1.创建一个对象,将对象写入作用域中。
<%
User user=new User(); user.setName("猪猪侠"); user.setAge(16);
%>
2.使用EL表达式获取作用域的key.对象的属性。不需要加get。
${user.name}
EL表达式获取list和map集合
1.创建集合,放入作用域中,
<%
User user=new User(); user.setName("猪猪侠"); user.setAge(16); User user2=new User(); user2.setName("猪猪侠2"); user2.setAge(19); List<User> list=new ArrayList<User>(); list.add(user); list.add(user2); Map<String,User> map=new HashMap<String, User>(); map.put("一号",user); map.put("二号",user2); request.setAttribute("list",list); request.setAttribute("map",map);
%>
2..EL表达式获取集合属性时为:key[下标].属性名
${ list[1].name} <br> ${map["二号"].name}
JSTL Java Standard Tag Library (java标准标签库)
使用JSTL需要两个jar包和标签库描述符文件(.tld文件),在java高版本无需引jar,在低版本和非eclipse和myeclipse外的一些软件需要手动引入jar包。
需要使用taglib标签:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL可以和EL表达式混合使用
通用标签
set:用于设置指定范围的变量值
<c:set var="变量名" valuue="变量值" scope="作用域名"></c:set>
<c:set var="name" value="二傻" scope="page"></c:set>
${name}
out:计算表达式并将结果输出显示
<c:out value="需要输出的值"></c:out>
如果value写的是set标签中的var,他会看成是四个字母输出,所以需要使用到EL表达式进行混合输出。
<c:set var="name" value="二傻" scope="page"></c:set>
<c:out value="${name}"></c:out>
out输出超链接:
out输出超链接需要用到 escapeXml。
escapeXml有四个取值 true(不对超链接进行转换转义,原模原样输出) 默认值(不对超链接进行转换转义,原模原样输出) Y(对超链接进行转换转义,解析成一个可以点的超链接) false(对超链接进行转换转义,解析成一个可以点的超链接)
<c:out escapeXml="false" value="<a href='http://www.baidu.com'>百度</a>"></c:out>
使用true或默认值的结果:
使用Y或false的结果:
、