JSTL标签库
什么是JSTL
Apache提供的标签库,JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL)
jar包:jstl-1.2.jar,如果使用MyEclipse,它会帮我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入。
*apache的东西,依赖EL
*使用jstl需要导入jstl1.2.jar
*四大库:
< core:核心库,重点
< fmt:格式化:日期、数字
< sql:过时
< xml:过时
导入标签库
*jar包
*在jsp页面中:<%@taglib prefix=”前缀” uri=”路径”%>
下面是导入JSTL的core标签库:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”; %>
prefix的属性值,必须跟下面便签的对象名保持一致
uri如果写错了会报错,找不到该类
core –> c标签!
1. out和set
*
< value:可以是字符串常量,也可以是EL表达式
< default:当要输出的内容为null时,会输出default指定的值
< escapeXml:默认值为true,表示转义!
*
*
*
*
*
< var:变量名
< value:变量值,可以是EL表达式
< scope:域,默认为page,可选值:page、request、session、application
*
*
2. remove
*
< var:变量名
< scope:如果不给出scope,表示删除所有域中的该名称的变量;如果指定了域,那么只删除该域的变量。
*
*
3. url
*value:指定一个路径!它会在路径前面自动添加项目名。
<> ,它会输出/day13_1/index.jsp
* 子标签:
结果为:/day13_1/index.jsp?username=%ED%2C%3F%ED%2C%3F
*var:指定变量名,一旦添加了这个属性,那么url标签就不会再输出到页面,而是把生成url保存到域中。
*scope:它与var一起使用,用来保存url。
*
*
*
4. if:对应java中的if语句
*
*
hello
5. choose:它对应java中的if/else if/ … /else
*
等同与:
if() {
} esle if() {
} esle if() {
} else if() {
} else {
}
6. forEach
它用来循环遍历数组、集合!
它还可以用来计数方式来循环!
计数方式:
for(int i = 1; i <= 10; i++) {
…
}
&{i}
属性:
*var:循环变量
*begin:设置循环变量从几开始。
*end:设置循环变量到几结束。
*step:设置步长!等同与java中的i++,或i+=2。step默认为1
可以用来遍历数组、List、Map、
- 计数循环
&{i}
等同于
for(int i = 1; i <= 10; i++) {
out.println(i);
}
&{i}
等同于
for(int i = 1; i <= 10; i+=2) {
out.println(i);
}
遍历数组
<%
String[] names = {“zhangSan”, “liSi”, “wangWu”, “zhaoLiu”};
pageContext.setAttribute(“ns”, names);
%>
等同于
for(String str : strs) {
…
}
属性:
* items:指定要循环谁,它可以是一个数组或一个集合,中间一定不要有空格
* var:把数组或集合中的每个元素赋值给var指定的变量。
遍历List
<% List<String> names = new ArrayList<String>(); names.add("zhangSan"); names.add("liSi"); names.add("wangWu"); names.add("zhaoLiu"); pageContext.setAttribute("ns", names); %>
<c:forEach var="item" items="${ns }">
<c:out value="name: ${item }"/><br/>
</c:forEach>
遍历Map
<% Map<String,String> stu = new LinkedHashMap<String,String>(); stu.put("number", "N_1001"); stu.put("name", "zhangSan"); stu.put("age", "23"); stu.put("sex", "male"); pageContext.setAttribute("stu", stu); %>
<c:forEach var="item " items="${stu }">
<c:out value="${item.key }: ${item.value } "/><br/>
</c:forEach>
循环状态
可以使用varStatus来创建循环状态变量,可随便定义变量名!
循环状态变量有如下属性:
* count:循环元素的个数
* index:循环元素的下标
* first:是否为第一个元素
* last:是否为最后一个元素
* current:当前元素
<c:forEach items="${list }" var="ele" varStatus="vs">
${vs.index} ${vs.count } ${vs.first } ${vs.last } ${vs.current }<br/>
</c:forEach>
<c:forEach var="item" items="${ns }" varStatus="vs" >
<c:if test="${vs.first } ">第一行:</c:if>
<c:if test="${vs.last } ">最后一行:</c:if>
<c:out value="第${vs.count } 行: "/>
<c:out value="[${vs.index } ]: "/>
<c:out value="name: ${vs.current } "/><br/>
</c:forEach>
fmt库
它是格式化库
导入JSTL格式化标签库
<%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt”; %>
格式化日期:
value:指定一个Date类型的变量
pattern:用来指定输出的模板!例如:yyyy-MM-dd HHss
例子:
<%
Date date = new Date();
pageContext.setAttribute(“d”, date);
%>
格式化小数:
保留小数点后2位,它会四舍五入!如果不足2位,不补位!
例子:
<%
double d1 = 3.5;
double d2 = 4.4;
pageContext.setAttribute(“d1”, d1);
pageContext.setAttribute(“d2”, d2);
%>
* pattern:0.00,表示小数不足两位时,使用0补足两位
* pattern:#.##,表示小数不足两位时,有几位显示几位,不会补足
还没有评论,来说两句吧...