JSTL标签库
全称JavaServer Pages Standard Tag Library,目的是提供一套标准通用的标签函数库,和EL一起取代JSP中嵌套java代码的做法。
一、安装
- JSTL主要是由Apache组织的Jakarta Project实现,JSTL1.1要求容器必须支持Servlet2.4且JSP2.0以上版本。
- 复制jstl.jar和standard.jar到工程的WEB-INF\lib下即可
- 默认新建WEB Project会自动安装
二、引入
1.引入方式
使用taglib指令引入JSTL标签库文件
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
2.标签库组成
- 核心标签库 (Core tag library)
- 国际化标签 (I18N—capable formatting tag library)
- 数据库标签(SQL tag library)
- XML标签(XML tag library)
- JSTL函数标签(Functions tag library)–EL函数
三、语法
1.标签
- 功能:遍历数组和集合
- 属性
- items 指定要遍历的集合对象或数组
- var 将迭代的元素保存到PageContext域中的属性名称
- varStatus 记录用于迭代的信息
- count总共指到的成员个数
- index现在指到的成员的索引
- first现在指到的成员是否是第一个成员
- last现在指到的成员是否是最后一个成员
- begin 从指定的索引值开始遍历
- end 从指定的索引值结束遍历
- step 指定步长
- 遍历ArrayList
<%--创建一个List --%>
<%
ArrayList<String> list= new ArrayList<String>();
list.add("Google");
list.add("Microsoft");
list.add("Apple");
pageContext.setAttribute("companies",list);
%>
<%--遍历List --%>
<c:forEach var="company" items="${companies}" varStatus="status">
${status.count}
${company}
<br />
</c:forEach>
- 遍历HashMap
<%--创建一个Map --%>
<%
HashMap<String, String> map = new HashMap<String, String>();
map.put("Java", "面向对象");
map.put("C", "面向过程");
map.put("JS", "基于对象");
application.setAttribute("languages", map);
%>
<%--遍历Map --%>
<c:forEach items="${languages}" var="entry">
${entry.key}:${entry.value}<br />
</c:forEach>
2.标签
- 功能:根据用户是否存在显示不同的页面
- 属性
- test 要判断的条件表达式
- var 指定执行结果要保存到web域中的属性名称
- scope 指定执行结果要保存到的web域
- 案例:判断是否为Firefox浏览器
<%
String brower = request.getHeader("user-agent");
if(brower.indexOf("Firefox")!=-1){
brower="Firefox";
}else if (brower.indexOf("Chrome") != -1) {
brower = "Chrome";
}
pageContext.setAttribute("brower",brower);
%>
<br />
<c:if test="${brower eq 'Firefox'}">
这是火狐浏览器
</c:if>
3.标签
- 功能:条件选择,与和一起使用,类似于“if-else if-else”
- 案例:上一个案例的增强版
<c:choose>
<c:when test="${brower=='Firefox'}">
这是火狐浏览器
</c:when>
<c:when test="${brower=='Chrome'}">
这是谷歌浏览器
</c:when>
<c:otherwise>
这是其它浏览器
</c:otherwise>
</c:choose>
4.标签
- 功能:向页面输出数据,能将特殊字符转为实体字符,防止来自用户输入的攻击
- 属性
- value 指定要输出的内容
- escapeXml 是否要对特殊字符进行HTML编码,默认true
- default value为null时的输出内容
- 案例
<c:out value="${user}" default="没有这个属性" escapeXml="true"></c:out>