[b]一、EL表达式:[/b]
* 表示隐式对象
*存取器 ${user.group.name }
* 运算表达式 ${ v1 < v2 } ${ v1 > v2} ...
[b]二、JSTL核心库(core)[/b]
* c:out(进行输出)
<c:out value=${hello} default="123" escapeXml="true"></c:out>
default属性:用于显示默认值
escapeXml属性:用于确定是否解析XML
* c:set和c:remove(用于设置变量和移除变量)
<c:set value="1234" var="temp"/> <c:remove var="temp"/>
* c:if (用于条件判断)
<c:if test="${empty v5}"> v5为空 </c:if> <c:if test="${v1 < v2}">v1 < v2 </c:if>
* c:choose,c:when:,c:otherwise(测试条件选择)
<c:choose> <c:when test="${empty v1}"> v1为空<br> </c:when> <c:otherwise> v1不为空<br> </c:otherwise> </c:choose>
* c:forEach(测试循环控制)
begin:控制循环开始位置
end:控制循环结束位置
step:控制循环步长
varstatus:进行循环每步的判断选择
<li>测试循环控制c:forEach,begin,end,step,varstatus</li>
<table border="1"> <tr><td>姓名</td> <td>年龄</td> <td>所在组</td> </tr> <c:choose> <c:when test="${empty users}"> <tr><td colspan="3">不存在数据</td></tr> </c:when> <c:otherwise> <c:forEach items="${users}" begin="2" end="8" step="1" var="user" varStatus="v"> <c:choose> <c:when test="${v.count %2 == 0}"> <tr bgcolor="red"> </c:when> <c:otherwise> <tr></tr> </c:otherwise> </c:choose> <td>${user.username }</td> <td>${user.age }</td> <td>${user.group.name }</td> </tr> </c:forEach> </c:otherwise> </c:choose> </table>
* c:catch(捕获异常)
<c:catch var="v"> <% Integer.parseInt("addsa"); %> </c:catch> ${v }<br>
* c:import
* c:url 和 c:param (用于生成含参数的URL)
* c:redirect (重定向)
[b]三、JSTL格式化库标签[/b]
* fmt:formatDate (格式化日期)
<fmt:formatDate value = "${today}" pattern = "yyyy/MM/dd HH:mm:ss"/>
* fmt:formatNumber (格式化数字)
<fmt:formatNumber value = "${n}" pattern = "###,###.##" /> pattern = "###,###.0000"
[b]四、JSTL函数库(必须在EL表达式中使用)[/b]
* fn:length ${ fn:length(username) }
* fn:indexOf
* fn:split
* fn:trim
...
[b]五、自定义函数库[/b]
* 定义类和方法(方法必须是public static)
* 编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下(tld文件格式参照JSTL的tld文件格式)
* 在jsp中采用taglib指令引入自定义函数库
* 采用 前缀+冒号+函数名 调用即可