Struts(4)jstl标签技术基本介绍
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>
还没有评论,来说两句吧...