【DRP】——JSTL之核心标签库
【JSTL】
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问、函数标签库。
JSTL标签库的使用是为了弥补HTML标签的不足,规范自定义标签的使用而诞生的。使用JSTL标签的目的就是不希望在jsp页面中出现Java逻辑代码。
【分类】
核心标签(Core 用的最多)
格式化标签
SQL 标签
XML 标签(几乎不用)
JSTL 函数(EL)
【说明】
JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的基本功能,减少编码工作。
从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。
(1)表达式控制标签:out标签、set标签、remove标签、catch标签。
(2)条件控制标签:if标签、choose标签、when标签、otherwise标签。
(3)循环标签:forEach标签、forTokens标签。
(4)URL操作标签:import标签、url标签、redirect标签、param标签。
在JSP页面引入核心标签库的代码为:<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core“ %>
【应用】
拷贝jstl.jar和standard.jar到WEB-INF/lib目录下
在JSP中添加伪指令
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
【Core标签库】
表达式控制标签
标签
1、定义:
用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是
2、语法格式:
3、属性:
4、例子:
Servlet中 //普通字符串 request.setAttribute("hello", "Hello World"); //HTML字符串 request.setAttribute("welcome", "<font color='red'>欢迎你来到这个世界!</font>");
<li>采用c:out标签</li><br> hello(使用标签):<c:out value="123"/><br> hello(使用标签):<c:out value="hello"/><br> hello(使用标签):<c:out value="${hello}"/><br> hello(使用EL表达式):${hello }<br> hello(default):${hello123 }<br> hello(使用缺省值):<c:out value="${hello123}" default="没有值"/><br> hello(使用缺省值):<c:out value="${hello123}">没有值</c:out><br> welcome(使用EL表达式):${welcome }<br> welcome(使用标签,escapeXml=true):<c:out value="${welcome}" escapeXml="true"/><br> welcome(使用标签,escapeXml=false):<c:out value="${welcome}" escapeXml="false"/><br>
5、结果显示:
标签
1、定义:标签用于设置变量值和对象属性。
2、语法格式:
<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>"/>
3、属性:
4、例子:
<c:set value="root" var="userid"/> userid:${userid }<br>
5、结果显示
标签
1、定义:用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。
这个标签不是特别有用,不过可以用来确保JSP完成清理工作。
2、语法格式:
3、属性:
4、例子:
<c:set value="root" var="userid"/> userid:${userid }<br> <c:remove var="userid"/> userid:${userid }<br>
5、结果显示
标签
1、定义: 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。
2、语法格式:
<c:catch var="<string>">
...
</c:catch>
3、属性:
4、例子:
<li>c:catch标签</li><br>
<%
try {
Integer.parseInt("asdfsdf");
}catch(NumberFormatException e) {
e.printStackTrace();
out.println(e.getMessage());
}
%>
<p>
<c:catch var="msg">
<%
Integer.parseInt("asdfsdf");
%>
</c:catch>
${msg }<br>
5、显示结果:
条件控制标签:
标签
1、定义:标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。
2、语法格式:
<c:if test="<boolean>" var="<string>" scope="<string>"> ... </c:if>
3、属性:
4、例子:
//条件控制标签 request.setAttribute("v1", 10); request.setAttribute("v2", 20); <li>条件控制标签:c:if</li><br> <c:if test="${v1 lt v2}"> v1小于v2<br> </c:if>
5、结果显示
, , 标签
1、定义:
标签与Java switch语句的功能一样,用于在众多选项中做出选择。
switch语句中有case,而
2、语法格式:
<c:choose> <c:when test="<boolean>"/> ... </c:when> <c:when test="<boolean>"/> ... </c:when> ... ... <c:otherwise> ... </c:otherwise> </c:choose>
3、属性:
4、例子:
<c:choose> <c:when test="${v1 gt v2}"> v1大于v2<br> </c:when> <c:otherwise> v1小于v2<br> </c:otherwise> </c:choose> <c:choose> <c:when test="${empty userList}"> 没有符合条件的数据<br> </c:when> <c:otherwise> 存在用户数据<br> </c:otherwise> </c:choose> <p>
5、结果显示
循环标签
标签
1、定义:标签是更加通用的标签,因为它迭代一个集合中的对象。
2、语法格式:
<c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
3、属性:
4、例子:
<li>演示循环控制标签:forEach</li><br> <h3>采用jsp脚本显示</h3> <table border="1"> <tr> <td>用户名称</td> <td>年龄</td> <td>所属组</td> </tr> <% List userList = (List)request.getAttribute("users"); if (userList == null || userList.size() == 0) { %> <tr> <td colspan="3">没有符合条件的数据</td> </tr> <% }else { for (Iterator iter=userList.iterator(); iter.hasNext();) { User user = (User)iter.next(); %> <tr> <td><%=user.getUsername() %></td> <td><%=user.getAge() %></td> <td><%=user.getGroup().getName() %></td> </tr> <% } } %> </table> <h3>采用forEach标签</h3> <table border="1"> <tr> <td>用户名称</td> <td>年龄</td> <td>所属组</td> </tr> <c:choose> <c:when test="${empty users}"> <tr> <td colspan="3">没有符合条件的数据</td> </tr> </c:when> <c:otherwise> <c:forEach items="${users}" var="user"> <tr> <td>${user.username }</td> <td>${user.age }</td> <td>${user.group.name }</td> </tr> </c:forEach> </c:otherwise> </c:choose> </table> <h3>采用forEach标签,varstatus</h3><br> <table border="1"> <tr> <td>用户名称</td> <td>年龄</td> <td>所属组</td> </tr> <c:choose> <c:when test="${empty users}"> <tr> <td colspan="3">没有符合条件的数据</td> </tr> </c:when> <c:otherwise> <c:forEach items="${users}" var="user" varStatus="vs"> <c:choose> <c:when test="${vs.count mod 2 == 0}"> <tr bgcolor="red"> </c:when> <c:otherwise> <tr> </c:otherwise> </c:choose> <td>${user.username }</td> <td>${user.age }</td> <td>${user.group.name }</td> </tr> </c:forEach> </c:otherwise> </c:choose> </table> <li>演示循环控制标签:forEach,输出map</li><br> <c:forEach items="${map}" var="entry"> ${entry.key },${entry.value }<br> </c:forEach> Servlet //结构 Group group = new Group(); group.setName("动力节点603班"); List users = new ArrayList(); for (int i=0; i<10; i++) { User user = new User(); user.setUsername("张三_" + i); user.setAge(23 + i); user.setGroup(group); users.add(user); } request.setAttribute("users", users); //map Map map = new HashMap(); map.put("k1", "v1"); map.put("k2", "v2"); map.put("k3", "v3"); map.put("k4", "v4"); request.setAttribute("map", map);
5、结果显示
1、定义:标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。
2、语法格式:
<c:forTokens items="<string>" delims="<string>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
3、属性:
4、例子:
request.setAttribute("strTokens", "1#2#3#4#5"); <li>演示循环控制标签:forTokens</li><br> <c:forTokens items="${strTokens}" delims="#" var="v"> ${v }<br> </c:forTokens>
5、结果显示
URL操作标签
标签
1、定义:检索一个绝对或相对URL,然后将其内容暴露给页面
2、语法格式:
<c:import
url="<string>"
var="<string>"
scope="<string>"
varRender="<string>"
context="<string>"
charEncoding="<string>"/>
3、属性:
4、例子:
<li>c:import标签</li><br>
<c:import url="http://localhost:8080/test_jstl/index.jsp"/>
5、显示结果:
转到http://localhost:8080/test\_jstl/index.jsp页面
、标签
1、定义:
2、语法格式:
<c:param name="<string>" value="<string>"/>
<c:url
var="<string>"
scope="<string>"
value="<string>"
context="<string>"/>
3、属性
4、例子:
<li>c:url,c:param</li><br>
<c:url value="" var="u">
<c:param name="userId" value="zhangsan"/>
<c:param name="age" value="20"/>
</c:url>
${u }<br>
5、结果:
标签
1、定义:重新定向一个新的URL
2、语法:
3、属性:
4、例子:
<li>c:redirect</li><br>
<c:redirect url="/index.jsp" context="/test_jstl"/>
5、显示结果
小编关于JSTL核心标签库的内容就写到这里了,欢迎继续阅读【DRP】——JSTL之格式化标签与函数
还没有评论,来说两句吧...