EL表达式的作用:
在取值方面,完全替代了原来jsp中的java脚本,取值非常方便,在jsp中不用导包了。
1.获取数据
我们以前从域中获取数据:getAttribute
取得参数值:getParameter
取得全局参数值等等。
2.执行运算
取得运算的布尔值搭配JSTL标签库来使用
EL表达式的语法
EL表达式是通过key来取值,${key}
例1:
<%
String str1 = (String)request.getAttribute("str1");
%>
<&=str1%>
以上例子中的getAttribute以后就可以不再使用了,key就是str1
${requestScope.str1}
xxxScope可以省略,默认从最小的域开始搜索。
EL表达式获取其他常用类型的值
使用EL表达式不用导包,自动识别。
获取的内容一般在Servlet中
1.获取数组值
${strArr[1]}
2.获取List值
${strList[1]}
3.获取Map值
域名.键名
${strMap.m1}
Map<String,String> map = new HashMap<String,String>();
map.put("str1","aaa");
request.setAttribute("myMap",map);
${myMap.str1}
4.domain
Student stu = new Student("A01","lyn",23);
request.setAttribute("stu",stu);
${s.id}相当于s.getId
${s.name}
${s.age}
JSTL的分类:
1.core核心类库: if foreach
2.fmt:格式化,将日期转换成String 国际化(用的比较少)
在servlet中处理好之后,jsp什么都不用干,拿到数据之后无脑展现
3.xml sql已经过时
4.函数库很少用
JSTL的创建步骤
1.导jar包(jstl.jar standard.jar)
2.在页面中导入标签库
<%taglib prefix="c" uri="jsp/jstl/core"%>
3.jstl标签的使用
c:if
<c:if test="${5>3}">
5是大于3的
</c:if>
因为没有else,取反来代替else,必须搭配EL表达式来使用
c:foreach
items:遍历的集合,需要搭配EL表达式来取值
var:每一次遍历出来的元素,需要搭配EL表达式来取值
varStatus:每一次遍历出来的元素的状态,常用属性count,通过取得当前元素是第几条(做序号用),搭配EL表达式来取值
begin:取值的开始下标
end:取值的结尾下标
step:每隔多少值取一个值
<c:forEach items="${sList}" var="s" varStatus="vs" begin="1" end="3">
${s}--${vs.count}<br/>
<c:forEach>
<c:set var="count" value="4">
c:choose相当于java中switch选择结构
<c:choose>
<c:when test="${count==1}">
计数1
</c:when>
<c:when test="${count==2}">
计数2
</c:when>
<c:otherwise>
不在范围内
</c:otherwise>
</c:choose>