JSTL
1.jstl的概述
- apache公司提供的,依赖EL
- 使用jstl需要导入jstl1.2.jar
- jstl标签库——四大库
core:核心标签库(重点)
fmt:格式化标签库
sql:数据库标签库(过时)
xml:xml标签库(过时)
2.导入标签库
- jar包
- 在jsp页面中:<%@taglib prefix=”前缀” uri=”路径”%>
3.core标签库常用标签(c标签)
(1)out和set - <c:out > - - - - 输出aaa字符串常量
value:可以是字符串常量,也可以是EL表达式
default:当要输出的内容为null时,会输出default里面指定的值
escapeXml:默认值为true,表示转义
<%
request.setAttribute("code", "<script>alert();</script>;");
%>
<c:out value="${code}"></c:out>
* <c:set>:设置(创建域的属性)
var:变量名
value:变量值,可以时EL表达式
scope:域,默认式page,可以选择其他域
<c:set var="code" value="<script>alert('hello')</script>;"></c:set>
<c:out value="${code}" escapeXml="ture"></c:out>
(2)remove
- <remove>:删除域变量
var:变量名
scope:如果不给出scope,表示删除所有域中的该名称变量,如果指定了域,那么就只删除该域中的变量
(3)Url
- value:指定一个路径,它会在路径前面自动添加项目名。
- <c:url value=”/index.jsp”/>,它会输出/JSTL/index.jsp
- 子标签:<c:param>,用来给url后面添加参数,例如:
<c:url value=”/index.jsp”>
<c:param name=”username” value=”张三”/>
</c:url>
结果为:/JSTL/index.jsp?username=%ED%2C%3F%6B%AC%3F
- var:指定变量名,一旦添加了这个属性,那么url标签就不会再输出到页面,而是把生成的url保存到域中。
- scope:它与var一起使用,用来保存url到指定域中。
(4)if:对应java中的if语句 - <c:if test=”布尔类型”>....</c:if>,当test为真时,执行标签体内容
(5)choose:它对应java中的if/else if/ ... /else - 例如:
<c:choose>
<c:when test=””> ... </c:when>
<c:when test=””> ... </c:when>
<c:when test=””> ... </c:when>
...
<c:otherwise> ... </c:otherwise>
</c:choose>
(6)forEach
它用来循环遍历数组、集合,还可以用来计数方式来循环
- 计数方式:
Java:
for(int i = 1; i <= 10; i++){
System.out.println(i);
}
等同于:
<c:forEach var=”i” begin=”1” end=”10”>
${i}
</c:forEach>
属性介绍:
- var:循环变量
- begin:设置循环变量从几开始
- end:设置循环变量到几结束
- step:设置步长,等同于Java中的i++或i+2.默认为1
输出集合和数组
数组:
<% String[] strs = {one,two}%>
<c:forEach items=”${strs}” var=”str”>
${str}<br/>
</c:forEach>
等同于java中的增强for
for(String str : strs){
......
}
属性介绍:
- items:指定要循环谁,它可以是一个数组或一个集合
- var:把数组或集合中的每个元素赋值给var指定的变量。
<c:forEach items=”{vs.index}
// 输出遍历数组或者集合的下标
{vs.first}
// 返回布尔类型,是否是第一个元素
{vs.current}
// 当前对象,相当于输出
</c:forEach>
4.fmt标签库——它是格式化库
<fmt:formatData value=”” pattern=””> - value:指定一个Data类型的变量
- pattern:用来指定输出的模板,例如:yyyy-MM-dd HH:mm:ss
<fmt:formatNumber value=”num1” pattern=”0.00”>
- 保留小数点后两位,它会四舍五入,不足两位用0补位
<fmt:formatNumber value=”num1” pattern=”#.##”> - 保留小数点后两位,它会四舍五入,不补位