【DRP】——JSTL之核心标签库

电玩女神 2022-06-18 10:56 413阅读 0赞

【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中添加伪指令

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

【Core标签库】

表达式控制标签

标签

1、定义:

用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是标签可以直接通过”.”操作符来访问属性。

2、语法格式:

3、属性:

Center

4、例子:

  1. Servlet //普通字符串 request.setAttribute("hello", "Hello World"); //HTML字符串 request.setAttribute("welcome", "<font color='red'>欢迎你来到这个世界!</font>");
  2. <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、结果显示:

Center 1

标签

1、定义:标签用于设置变量值和对象属性。

2、语法格式:

  1. <c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>"/>

3、属性:

Center 2

4、例子:

  1. <c:set value="root" var="userid"/> userid:${userid }<br>

5、结果显示

Center 3

标签

1、定义:用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。

这个标签不是特别有用,不过可以用来确保JSP完成清理工作。

2、语法格式:

3、属性:

Center 4

4、例子:

  1. <c:set value="root" var="userid"/> userid:${userid }<br> <c:remove var="userid"/> userid:${userid }<br>

5、结果显示

Center 5

标签

1、定义: 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。

2、语法格式:

  1. <c:catch var="<string>">
  2. ...
  3. </c:catch>

3、属性:

Center 6

4、例子:

  1. <li>c:catch标签</li><br>
  2. <%
  3. try {
  4. Integer.parseInt("asdfsdf");
  5. }catch(NumberFormatException e) {
  6. e.printStackTrace();
  7. out.println(e.getMessage());
  8. }
  9. %>
  10. <p>
  11. <c:catch var="msg">
  12. <%
  13. Integer.parseInt("asdfsdf");
  14. %>
  15. </c:catch>
  16. ${msg }<br>

5、显示结果:

Center 7

条件控制标签:

标签

1、定义:标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。

2、语法格式:

  1. <c:if test="<boolean>" var="<string>" scope="<string>"> ... </c:if>

3、属性:

Center 8

4、例子:

  1. //条件控制标签 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、结果显示

Center 9

, , 标签

1、定义:

标签与Java switch语句的功能一样,用于在众多选项中做出选择。

switch语句中有case,而标签中对应有,switch语句中有default,而标签中有

2、语法格式:

  1. <c:choose> <c:when test="<boolean>"/> ... </c:when> <c:when test="<boolean>"/> ... </c:when> ... ... <c:otherwise> ... </c:otherwise> </c:choose>

3、属性:

Center 10

4、例子:

  1. <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、结果显示

Center 11

循环标签

标签

1、定义:标签是更加通用的标签,因为它迭代一个集合中的对象。

2、语法格式:

  1. <c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">

3、属性:

Center 12

4、例子:

  1. <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、结果显示

Center 13 Center 14Center 15 Center 16

标签

1、定义:标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。

2、语法格式:

  1. <c:forTokens items="<string>" delims="<string>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">

3、属性:

Center 17

4、例子:

  1. request.setAttribute("strTokens", "1#2#3#4#5"); <li>演示循环控制标签:forTokens</li><br> <c:forTokens items="${strTokens}" delims="#" var="v"> ${v }<br> </c:forTokens>

5、结果显示

Center 18

URL操作标签

标签

1、定义:检索一个绝对或相对URL,然后将其内容暴露给页面

2、语法格式:

  1. <c:import
  2. url="<string>"
  3. var="<string>"
  4. scope="<string>"
  5. varRender="<string>"
  6. context="<string>"
  7. charEncoding="<string>"/>

3、属性:

Center 19

4、例子:

  1. <li>c:import标签</li><br>
  2. <c:import url="http://localhost:8080/test_jstl/index.jsp"/>

5、显示结果:

转到http://localhost:8080/test\_jstl/index.jsp页面

标签

1、定义:

标签用于在标签中指定参数,在标签内,name属性表明参数的名称,value属性表明参数的值。

标签只是用于调用response.encodeURL()方法的一种可选的方法。它真正的优势在于提供了合适的URL编码,包括中指定的参数。

2、语法格式:

  1. <c:param name="<string>" value="<string>"/>
  2. <c:url
  3. var="<string>"
  4. scope="<string>"
  5. value="<string>"
  6. context="<string>"/>

3、属性

Center 20Center 21

4、例子:

  1. <li>c:url,c:param</li><br>
  2. <c:url value="" var="u">
  3. <c:param name="userId" value="zhangsan"/>
  4. <c:param name="age" value="20"/>
  5. </c:url>
  6. ${u }<br>

5、结果:

Center 22

标签

1、定义:重新定向一个新的URL

2、语法:

3、属性:

Center 23

4、例子:

  1. <li>c:redirect</li><br>
  2. <c:redirect url="/index.jsp" context="/test_jstl"/>

5、显示结果

Center 24

小编关于JSTL核心标签库的内容就写到这里了,欢迎继续阅读【DRP】——JSTL之格式化标签与函数

发表评论

表情:
评论列表 (有 0 条评论,413人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JSTL标签核心标签

    一、JSTL标签库介绍     JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的。使用JSLT标签的目的就是不希望在jsp页面中出现java逻