小声呐喊 2017-10-06
一、JSTL的概述
1、Apache开发与维护,依赖EL表达式
2、Apache Tomcat安装JSTL 库步骤如下:
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。
3、四大库
4、使用taglib指令导入标签库
<%<span>@ taglib prefix<span>="c"<span> uri<span>="http://java.sun.com/jsp/jstl/core" %>
5、core标签库常用标签
①out和set
| 示例 | 说明 |
| <c:out value="aaa"/> | 输出aaa字符常量 |
| <c:out value="${aaa}"/> | 与${aaa}相同,全域查找 |
| <c:out value="${aaa}" default="xxx"/> | 当${aaa}不存在时,输出xxx字符 |
<% request.setAttribute("a","<script>alert('hello');</script>"); %> <c:out value="${a}" default="xxx" escapeXml="false"/> | 当escapeXml为false,不会转换“<”、">"。 这可能会收到JavaScript攻击。 |
| 示例 | 说明 |
| <c:set var="a" value="hello"/> | 在pageContext中添加name为a,value为hello的数据 |
| <c:set var="a" value="hello" scope="sesssion"/> | 在session中添加name为a,value为hello的数据 |
②remove
| 示例 | 说明 |
<%<br /> pageContext.setAttribute("a","pageContext");<br /> request.setAttribute("a","request");<br /> session.setAttribute("a","session");<br /> application.setAttribute("a","application");<br />%><br /><c:remove var="a"/><br /><c:out value="${a}" default="none"/> | 删除所有域中name为a的数据。 |
<c:out value="${a}" scope="page"/> | 删除pageContext中name为a的数据 |
③url:url标签会在需要URL重写时添加sessionId 。
| 示例 | 说明 |
<c:url value="/"/> | 输出上下文路径:/day08_1/ |
<c:url value="/" var="a" scope="request"/> | 把本该输出的结果赋给变量a,范围为request |
<c:url value="/AServlet"/> | 输出上下文路径:/day08_1/AServlet |
<c:url value="/AServlet"> <c:param name="username" value="abc"/> <c:param name="password" value="123"/> </c:url> | 输出:/day08_1/AServlet?username=abc&password=123 如果参数中包含中文,那么会自动使用URL编码。 |
④if:if标签的test属性必须是一个boolean类型的值,如果test的值为true,那么执行if标签的内容,否则不执行。
<c:set var="a" value="hello"/>
<c:if test="${not empty a}">
<c:out value="${a}"/>
</c:if>⑤choose:choose标签对应Java中的if/else if/else结构。when标签的test为true时,会执行这个when的内容。当所有when标签的test都为false时,才会执行otherwise标签的内容。
<c:set var="score" value="${param.score}"/>
<c:choose>
<c:when test="${score >100 || score <0 }错误的分数:${score}</c:when>
<c:when test="${score >=90 }A级</c:when>
<c:when test="${score >=80 }B级</c:when>
<c:when test="${score >=70 }C级</c:when>
<c:when test="${score >=60 }D级</c:when>
<c:otherwise>E级</c:otherwise>
</c:choose>⑥forEach:它用来循序遍历数组、集合,还可以用来计算方式来循环。
<%<span>--<span>计数方式,1<span><=<span>i<span><=10 <span>--%>
<c:forEach var="i" begin="1" end="10" step="2"><span>
${i}
</c:forEach><span>//等同于下式
for(int i = 1; i <= 10; i++){}属性:
<!-- 输出数组、集合 -->
<c:forEach items="${strs}" var="str"><span>
${str }<br/>
</c:forEach>//等同于
for(String str: strs ){...}属性:
循环状态:可以使用varStaturs来创建循环状态变量。
<%<span>
ArrayList<span><String<span>><span> list <span>= new<span> ArrayList<span><String<span>><span>();
list.add("one"<span>);
list.add("two"<span>);
list.add("three"<span>);
request.setAttribute("list"<span>,list);
%>
<c:forEach items="${list}" var="ele" varStatus="vs"><span>
${vs.count} ${vs.index} ${vs.first} ${vs.last}
</c:forEach>循环状态变量有如下属性:
6、fmt库:格式化库
①格式化日期
<fmt:formatDate value="" pattern=""/>
<%
Date date <span>= new Date<span>();
request.setAttribute("d"<span>,date<span>);
%>
<fmt:formatDate value="${d}" pattern="yyyy-MM-dd HH:mm:ss"/><fmt:formatNumber value="${num1}" pattern="0.00">
保留小数点后2位,它会四舍五入,如果不足两位,以0补位。
<fmt:formatNumber value="${num1}" pattern="#.##">
保留小数点后2位,它会四舍五入,如果不足两位,不补位。
字符串过于长的时候需要通过仅仅展示前4个,用...表示省略,<c:if test="${fn:length<=5}">${word.type}</c:if>href触发JavaScript事件:。<a