一、EL表达式
1、简介
JSP表达式语言(Expression Language)使得访问存储在JavaBean中的数据变得非常简单。
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为 username的变量。它会依序从Page、Request、Session、Application范围查找(范围从小到大,且都是针对Attrbute())。
2、使用EL访问作用域
页面作用域:
${pageScope.userNum}
请求作用域:
${ requestScope.request_name }相当于<%=request.getAttribute("request_name");%>
会话作用域:
${ sessionScope.session_name }相当于<%=session.getAttribute("session_name");%>
程序作用域:
${ applicationScope.application_name }相当于<%=application.getAttribute("application_name");%>
3、如果要动态取值,可以使用[]
${session.user[date]},其中的date是一个变量,意思是取出session.user数组里面的第date个元素
4、EL表达式的隐性变量:
二、JSTL表达式
1、简介
JSTL是JSp标准标签库的简称,它提供的标签能一定程度上代替java代码,例如<c:forEach/>标签能实现java语言中的循环功能
2、JSTL标签库
- 核心标签 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- 格式化标签 <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt" %>
- SQL标签 <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
- XML标签 <%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
- JSTL函数 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
标签 |
描述 |
<c:out> |
用于在JSP中显示数据,就像<%= ... > |
<c:if> |
与我们在一般程序中用的if一样 |
<c:forEach> |
基础迭代标签,接受多种集合类型 |
<c:choose> |
本身只当做<c:when>和<c:otherwise>的父标签 |
<c:when> |
<c:choose>的子标签,用来判断条件是否成立 |
<c:otherwise> |
<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行 |
3、使用
<c:out>
<c:set var=”test” value=”这是一个测试”>
<c:out value=”${test}”><c:out> 等同于 JSP中的 <%= %>
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
属性 |
描述 |
是否必要 |
默认值 |
value |
要输出的内容 |
是 |
无 |
default |
输出的默认值 |
否 |
主体中的内容 |
escapeXml |
是否忽略XML特殊字符 |
否 |
true |
<c:if>
<c:if test=”条件”>满足条件执行的JSP代码</c:if>
<c:choose>
<c:choose>
<c:when test="判断语句1">执行语句1</c:when>
<c:when test="判断语句2">执行语句1</c:when>
...类似于Java中的switch和case
<c:otherwise>等同于Java switch中的default</c:otherwise>
</c:choose>用于选择标签对之间满足条件的语句,相当于switch语句
<c:catch>
<c:catch var=”testException”>类似于Java中的try
<% int i = 5/0; %>
</c:catch>
<c:if test=”${testException != null}”>如果在执行过程中,JSP代码发生了错误,那么将会复制给名字
上面的代码有错误发生
</c:if>
<c:forEach> 和 <c:forTokens>
<c:forEach var=”i” begin=”1” end=”5”>
${i}
</c:forEach>
<c:forTokens items=”a,b,c,d,e” delims=”,” var=”name”>
${name}
</c:forTokens>
<fmt:>
1)格式化日期<fmt:formatDate value=“” pattern=“yyyy-MM-dd HH:mm:ss”/>
2)格式化数字<fmt:formatNumber value="${number}" pattern="###,###.##" />