Struts(4)jstl标签技术基本介绍

r囧r小猫 2024-02-17 21:42 75阅读 0赞

1 jstl介绍

jstl(jsp standard tag libaray) jsp标准标签库,用于替换大量的<% %>Java片段等
②为什么需要jstl?
- 在应用程序服务器之间提供统一的接口,从而提供了web应用在不同服务器的移植
- 简化jsp与web应用程序的开发
- 减少jsp中java片段的代码,可以达到jsp页面中没有任何java代码,代码更加简洁
- 提高jsp开发速度,缩短开发周期

2 jstl 常用标签

①引入jstl标签库

  1. <!-- 引入jstl标签库 -->
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

uri内容参考:
这里写图片描述
standard.jar下META-INF文件夹下c.tld文件中<uri>http://java.sun.com/jsp/jstl/core</uri>
<c:out>用于把计算结果输出到JSPWriter对象。
<c:out>中的value属性的值,既可以是具体的字符串,也可以是表达式;
如果${username}不存在,就会输入指定的default的值;
escapeXml="false"如果${username}表达式包含html代码,将不会过滤,即按照html格式显示。

  1. <!-- 直接输出字符串 -->
  2. <c:out value="hello world jstl"></c:out><br>
  3. <!-- 输出reqeust/session/application/pageContext域对象的数据
  4. 对于相同属性名,c:out的优先级为:pageContext > request > session > application
  5. default指定没有找到值的情况下的默认返回值
  6. 对于 pageContext.setAttribute("username", "你好 <a href='pageContext'>sohu.com</a>");
  7. escapeXml false: html标签样式展示; true:以字符串形式展示
  8. -->
  9. <c:out value="${username}" default="没有值" escapeXml="false"></c:out><br>
  10. <!-- 输出对象 -->
  11. <c:out value="${user1.name}"></c:out>
  12. <!-- 也可以直接输出 EL表达式 -->
  13. ${user1.age} ${user1.age+200}

<c:set>用于在某个范围中设置某个值

  1. <c:set var="abc" value="中国,北京" scope="request"></c:set><br>
  2. <%= request.getAttribute("abc") %>

<c:remove>用于删除某个变量或是属性

  1. <c:remove var="abc" scope="request" />

<c:catch>用于捕获嵌套在它内部的标签抛出的异常

  1. <c:catch var="myexception">
  2. <% int i = 8/0; %>
  3. </c:catch>
  4. <c:out value="${ myexception }"></c:out>
  5. <c:out value="${ myexception.message }"></c:out>

3 jstl 条件标签

<c:if>用于进行条件判断,如果它的test属性为true,那么就去处理它的body

  1. <c:set var="abc" value="hello" scope="request"></c:set><br>
  2. <c:if test="${abc=='hello'}">
  3. OK!
  4. </c:if>
  5. ------------------------
  6. <c:set var="abc" value='12' scope="request"></c:set><br>
  7. <c:if test="${abc>2 and abc<22}">
  8. OK!
  9. </c:if>

<c:choose>用于进行条件选择,它和<c:when><c:otherwise>一起使用
<c:when>代表了<c:choose>的一个条件分支,使用它的限制条件:
- 必须以<c:choose>作为它的父标签
- 必须在<c:otherwise>之前出现
<c:otherwise>代表了<c:choose>最后一个分支,使用它的限制条件:
- 必须以<c:choose>作为它的父标签
- 必须在<c:choose>的最后分支出现

  1. <c:choose>
  2. <c:when test="${abc<3}">
  3. <font color="red">年龄小于3岁</font>
  4. </c:when>
  5. <c:when test="${abc<8}">
  6. <font color="blue">年龄小于8岁</font>
  7. </c:when>
  8. <c:otherwise>
  9. <font color="cyan">年龄无效</font>
  10. </c:otherwise>
  11. </c:choose>

4 jstl 迭代标签

<c:foreach>在一个Collection中迭代计算他的body内容,或是重复迭代固定的次数

  1. <%
  2. for(User user: users) {
  3. out.println(user.getName() + " " + user.getAge());
  4. }
  5. %>
  6. <br>
  7. <c:forEach items="${ users }" var="user">
  8. <c:out value="${ user.name }"></c:out>
  9. <c:out value="${ user.age }"></c:out><br>
  10. </c:forEach>
  11. ------迭代固定次数
  12. <c:forEach var="i" begin="1" end="10" step="3">
  13. <c:out value="${ i }"></c:out><br>
  14. </c:forEach>

<c:forTokens>分割字符串

  1. <c:forTokens items="12;34;你好;ddd" delims=";" var="temp">
  2. ${temp }
  3. </c:forTokens>

5 jstl 细节补充

<c:forEach>对map的迭代

  1. <c:forEach items="${ users }" var="user">
  2. <c:out value="${ user.key }"></c:out>
  3. <c:out value="${ user.value.name }"></c:out>
  4. <c:out value="${ user.value.age }"></c:out><br>
  5. </c:forEach>

<c:forEach>对set的迭代(与ArrayList一样)

  1. <c:forEach items="${ users }" var="user">
  2. <c:out value="${ user.name }"></c:out>
  3. <c:out value="${ user.age }"></c:out><br>
  4. </c:forEach>

<c:if>判断Collection等是否为空

  1. <c:if test="${!empty users }"></c:if>

④EL表达式中的三目运算符

  1. <c:if test="${2>1?true:false }">
  2. OK!
  3. </c:if>

6 jstl url相关标签

<c:import>``<c:param>
将aaa.jsp内容引入当前jsp,并携带参数:

  1. <c:import url="/WEB-INF/aaa.jsp">
  2. <c:param name="name" value="hello"></c:param>
  3. </c:import>
  4. --------取出参数-----
  5. <%=request.getParameter("name") %>
  6. ${param.name }

<c:redirect>对map的迭代
直接重定向到http://www.baidu.com<c:redirect url="http://www.baidu.com"></c:redirect>

发表评论

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

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

相关阅读