EL表达式+JSTL
EL表达式 表达式语言
格式:
${限域变量名} 限域变量名:设置作用域中的变量名
${expression}
pageContext 本页面
request 一次请求
session 一次会话
application 整个应用程序
EL表达式操作的是作用域,不能操作局部变量。
EL的取值方式是从小到大取,取到即止,如果四个范围都未取到 则显示空字符串
取值范围:page范围–》request范围–》session范围–》application范围
可以获取指定范围的作用域:
page范围:${pageScope.限域变量名}
request范围:${requestScope.限域变量名}
session范围:${sessionScope.限域变量名}
application范围:${applicationScope.限域变量名}
request.setAttribute是在请求域里面加了一个请求的参数,所以在sendRedirect以后是无法取到request.setAttribute的请求的
el表达式获取不了局部变量
<%--获取指定范围的数据--%>
page作用域:${pageScope.uname}<br>
request作用域:${requestScope.uname}<br>
sessionScope作用域:${sessionScope.uname}<br>
applicationScope作用域:${applicationScope.uname}<br>
默认获取最小范围的数据:${uname}<br>
获取集合的长度:${list.size()}<br>
获取指定下标的值:${list[0]}<br>
获取指定key的value:${map.aaa} -- ${map["bbb"]}<br>
获取JavaBean对象:${user}<br>
<%--属性字段必须提供get方法--%>
获取JavaBean对象的属性:${user.uname} -- ${user.getUname()} -- ${user.student.stuname}<br>
empty判读域对象是否为空 为空,返回true 不为空 返回false
${empty 限域变量名}
判断对象是否不为空
${empty 限域变量名}
JSTL 的使用
1.拷贝jar包
2.通过taglib指令 引入标签
<%-- 核心标签库 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%--格式化标签库 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
条件判断
if标签
<c:if test="条件">
满足条件的代码
</c:if>
注:没有else标签 如果需要实现else的效果 需要设置相反的条件
choose when otherwise标签
1.choose标签与otherwise标签没有属性 when标签必须要有test标签
2.choose标签至少有一个我很标签
3.otherwise标签必须放在最后一个when标签不执行时才会执行
4.choose标签只能包含when和otherwise标签,when和otherwise标签中可以嵌套其他标签
迭代标签
forEach标签
var 限域变量名
begin 开始循环的数
end 结束循环的数
items 要遍历的集合
<c:forEach var="i" begin="1" end="10">
${i}
</c:forEach>
相当于Java中
for(int i=1;i<=10;i++){
}
<c:forEach var="str" items="${list}">
${str}
</c:forEach>
相当于Java中
for(String str:list ){
}
formatDate格式化日期标签
将日期型数据转化成指定格式的字符串
<%
request.setAttribute("data1",new Date());
%>
${data1}<br>
<fmt:formatDate value="${data1}" type="date"/><br>
<fmt:formatDate value="${data1}" type="time"/><br>
<fmt:formatDate value="${data1}" type="both"/><br>
<fmt:formatDate value="${data1}" type="date" dateStyle="FULL"/><br>
<fmt:formatDate value="${data1}" type="date" dateStyle="short"/><br>
<fmt:formatDate value="${data1}" pattern="yyyy-MM--dd"/><br>