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

来源:互联网 发布:美工需要具备什么条件 编辑:程序博客网 时间:2024/06/15 08:51

1 jstl介绍

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

2 jstl 常用标签

①引入jstl标签库

<!-- 引入jstl标签库 --><%@ 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格式显示。

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

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

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

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

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

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

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

3 jstl 条件标签

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

<c:set var="abc" value="hello" scope="request"></c:set><br><c:if test="${abc=='hello'}">    OK!</c:if>------------------------<c:set var="abc" value='12' scope="request"></c:set><br><c:if test="${abc>2 and abc<22}">    OK!</c:if>

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

<c:choose>    <c:when test="${abc<3}">        <font color="red">年龄小于3岁</font>    </c:when>    <c:when test="${abc<8}">        <font color="blue">年龄小于8岁</font>    </c:when>    <c:otherwise>        <font color="cyan">年龄无效</font>    </c:otherwise></c:choose>

4 jstl 迭代标签

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

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

<c:forTokens>分割字符串

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

5 jstl 细节补充

<c:forEach>对map的迭代

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

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

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

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

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

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

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

6 jstl url相关标签

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

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

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

0 0