核心标签库
1. 引用标签库(tld文件)
1. 在jsp文件中添加taglib指令
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2. 找到标签库文件
路径:项目类库JSTL1.2.2Library -> jstl-impl.jar -> META-INF -> c.tld
3. taglib指令中的uri属性值对应c.tld文件中的uri标签中的内容
4. taglib指令中的prefix属性值对应c.tld文件中的short-name标签中的内容
2. 常用标签
<c:set var="name" value="tom" scope="request"></c:set>
等效于
<%
pageContext.setAttribute("name", "tom", pageContext.REQUEST_SCOPE);
%>
Set标签默认作用域 pageContext
<c:out value=""></c:out>
Out标签等效于
<%-- <%=pageContext.findAttribute("name") %> --%>
<c:out value="${name }" default="lisi"></c:out>
注:当value值等于null(“”字符串不行)时,显示default值
<!-- if标签 -->
作用:从域对象中获取值并判断(只单条件判断)
<c:set var="age" value="20"></c:set>
<c:if test="${age>18 }">
成年人
</c:if>
<!-- choose标签 -->
作用:多条件判断
<c:set var="num" value="2"></c:set>
<c:choose>
<c:when test="${num==1 }">
星期一
</c:when>
<c:when test="${num==2 }">
星期二
</c:when>
<c:otherwise>
星期日
</c:otherwise>
</c:choose>
<!-- forEach标签 -->
属性:
items="list" 循环的目标
begin="" 开始角标(默认值0)
end="" 结束角标(默认值为目标大小-1)
step="" 步进个数(默认值1)
var="" 为循环中的元素定义别名
varStatus="stats"状态对象(显示行数${stats.count})
<c:forEach items="${list }" var="stu" varStatus="stats">
${stats.count} ,${stu.name },${stu.age }<br/>
</c:forEach>
<!-- forTokens标签 -->
作用:拆分字符串并循环
<c:set var="strs" value="jim-tom-cat-haha"></c:set>
<c:forTokens items="${strs }" delims="-" var="s">
${s }<br/>
</c:forTokens>
<!-- 重定向标签 -->
注:传参还可以使用?传值
<c:redirect url="http://www.baidu.com">
<c:param name="a" value="c"></c:param>
</c:redirect>
自定义标签
1. 步骤
a) 创建自定义标签类,继承SimpleTagSupport或实现SimpleTag接口
b) 重写doTag方法
i. 如果用到内置对象,则通过this.getJspContext()获取jspContext对象
ii. jspContext的子类是PageContext,可以强转
iii. 通过PageContext得到需要的其他内置对象。
c) 创建标签库文件
i. 位置 当前项目 -》WebRoot->WEB-INF根目录
ii. 文件类型xxx.tld
iii. 内容copy 其他标签库,如下:
<tlib-version>1.2</tlib-version> <short-name>qm</short-name> <uri>http://www.qingmang.com</uri>
<tag> <name>show</name> <tag-class>com.qingmang.tag.DemoTag</tag-class> <body-content>scriptless</body-content> </tag> |
d) 引用标签库
在需要使用的jsp文件中通过taglib指令引入标签库
<%@ taglib uri="http://www.qingmang.com" prefix="qm" %>