JSTL使用
JSTL标记库由以下标记组成:
- core:核心标签,流程控制, 处理作用域变量, 变量的显示, 异常的处理, url的处理;
- formatting:日期, 时间, 数字等的有关i18n的格式化处理;
- xml:解析xml和通过xsl转换文档格式的处理;
- sql:SQL数据库操作的处理。
比较常用的是core和formatting标签。xml标签用于特定场景的数据显示,sql标签用于敏捷开发(j2ee开发为了分工和关注分离,往往通过dao在java代码中封装sql操作)
必须引入的jar包为:jstl.jar ,standard.jar
JSP中引入:
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
- <%@ taglib uri="/struts-tags" prefix="s" %>
Core库
1.<c:choose>动作用于控制嵌套<c:when>和<c:otherwise>动作的处理,它只允许第一个测试表达式计算为true 的<c:when>动作得到处理;如果所有<c:when>动作的测试表达式都计算为false,则会处理一 个<c:otherwise>动作。<c:choose>标签没有属性,可以被认为是父标 签,<c:when>、<c:otherwise>将作为其子标签来使用
<c:choose>
<c:whentest="${product.onSale}">
${product.salesPrice}On sale!
</c:when>
<c:otherwise>
${product.price}
</c:otherwise>
</c:choose>
2.<c:forEach>此动作接受属性表中所列的类型集合
<c:forEach items="${atts}"var="item" varStatus="s">
<h2><c:out value="${item}"/>的四种属性></h2>
index: ${s.index}</br>
count: ${s.count}</br>
first: ${s.first}</br>
last: ${s.last}</br>
</c:forEach>
3. <c:forToken>标签可以根据某个分隔符分隔指定字符串
<c:forTokenitems="A,B,C,D,E,F,G" delims="," var="item>
${item}
</c:forToken>
<%
String phonenumber="123-456-7899";
request.setAttribute("userPhone",phonenumber);
%>
<c:forTokensitems="${userPhone}" delims="-" var="item">
${item}
</c:forTokens>
4. <c:if>动作仅当所指定的表达式计算为true时才计算其体
<c:if test="${fn:length(myMark)==0}">
</c:if>
5. :<c:out>标签是一个最常用的标签,用于在 JSP 中显示数据。它的作用是用来替代通过JSP内 置对象out或者<%=%>标签来输出对象的值
您的用户名是: <c:out value=”${user.username}” default=”guest”/>
6. <c:param>用于传递参数,用来为包含或重定向的页面传递参数
<c:redirecturl="/MyHtml.jsp">
<c:param name="userName"value=”RW” />
</c:redirect>
该示例将为重定向的“MyHtml.jsp”传递指定参数“userName=’RW’”
7. <c:remove>标签用于删除存在于scope中的变量
<c:remove var="username"scope="session"/>
8. <c:set>标签用于为变量或JavaBean中的变量属性赋值的工作
<c:set value="value"var="varName"[scope="{page|request|session|application}"]/>
9. <c:url>主要用来产生一个URL
<a href="<c:urlvalue="http://www.javafan.net " > <c:paramname="param" value="value"/></c:url>">Java爱好者</a>
如果<c:url>有 var属性时,则网址会被存到 varName中,而不会直接输出网址
Functions库(与EL语句一起使用)
1.fn:contains函数用来判断源字符串是否包含子字符串, 其返回结果为一个 boolean 类型的值
${fn:contains("ABC","a")} ${fn: containsIgnoreCase("ABC", "a")} //忽略大小写
2. fn:endsWith函数用来判断源字符串是否符合一连串的特定词尾。它与 fn:startsWith 函数相同
${fn:endsWith("ABC","bc")}
3. fn:escapeXml函数用于将所有特殊字符转化为字符实体码
${fn:escapeXml(param:info)}
4. fn:indexOf函数用于取得子字符串与源字符串匹配的开始位置
${fn:indexOf("ABCD","aBC")}
5. 长度函数 fn:length 解决了无法通过 EL 表达式“ ${collection.size} ”来取得集合大小的问题。
<%ArrayList arrayList1 = new ArrayList();
arrayList1.add("aa");
arrayList1.add("bb");
arrayList1.add("cc");
%>
<%request.getSession().setAttribute("arrayList1",arrayList1);%>
${fn:length(sessionScope.arrayList1)}
假设一个 ArrayList 类型的实例“ arrayList1 ”,并为其添加三个字符串对象,使用 fn:length 函数后就可以取得返回结果为“ 3 ”
6. fn:replace 函数允许为源字符串做替换的工作
${fn:replace("ABC","A","B")}
7. fn:split 函数用于将一组由分隔符分隔的字符串转换成字符串数组
${fn:split("A,B,C",",")}
8. fn:substring 函数用于截取字符串
${fn:substring("ABC","1","2")}
9. fn:toLowerCase 函数允许将源字符串中的字符全部转换成小写字符
${fn:toLowerCase("ABCD")}
10. fn:trim 函数将删除源字符串中结尾部分的“空格”以产生一个新的字符串
${fn:trim("ABC ")}
至于fmt用的较少,只有<fmt:formatDate>用的多一点
<fmt:formatDate> 标签用于格式化日期
<fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss"value="${post.postTime}" var="fmtDate"/>
EL运算符的运用
表达式语言(Expression Language)是一种简化的数据访问方式,使用EL可以方便的以标记格式访问JSP的隐含对象和JavaBean组件。它不是一种通用的程序语言,而只是数据访问语言
转载自:我能我行的CSDN博客 http://blog.csdn.net/zxq1406spys/article/details/1875623
关系运算符(6个)
!= 或 ne 不等于 ${ 5 != 5 } 或 ${ 5 ne 5 } false
< 或lt 小于 ${ 3 < 5 }或 ${ 3 lt 5} true
> 或gt 大于 ${ 3 > 5 }或 ${ 3 gt 5} false
<= 或 le 小于等于 ${ 3 <= 5 }或 ${ 3 le 5 } true
>= 或ge 于等于 ${ 3 >= 5 }或 ${ 3 ge 5 } false
= = 或 eq 等于 ${ 5 = = 5 } 或 ${ 5 eq 5 } true
逻辑运算符(3个)
&& 或 and 交集 ${ A && B } 或 ${ A and B } true / false
|| 或 or 并集 ${ A || B } 或 ${ A or B }true / false
! 或 not 非 ${ !A } 或 ${ not A } true / false
Empty运算符 ${ empty param.name }
条件运算符 ${ A? B : C} 当A 为true 时,执行B;而A 为false 时,则执行C
最后笔者写一个ELOperator.jsp 范例,将所有运算符实际操作一遍
<%@ pagecontentType="text/html;charset=GB2312" %>
<%@ taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>CH6 – ELOperator.jsp</title>
</head>
<body>
<h2>EL 的运算符</h2>
<c:set value="mike"var="username" scope="request" />
<table border="1"width="50%" align="left">
<TR>
<TR>
<TH>运算式</TH>
<TH>结果</TH>
</TR>
<TR><TD>14 + 3</TD><TD>${14 + 3}</TD></TR>
<TR><TD>14 -3</TD><TD>${14 - 3}</TD></TR>
<TR><TD>14 * 3</TD><TD>${14 * 3}</TD></TR>
<TR><TD>14 / 3</TD><TD>${14 / 3}</TD></TR>
<TR><TD>14 % 3</TD><TD>${14 % 3}</TD></TR>
<TR><TD>14 == 3</TD><TD>${14 ==3}</TD></TR>
<TR><TD>14 != 3</TD><TD>${14 !=3}</TD></TR>
<TR><TD>14 < 3</TD><TD>${14 <3}</TD></TR>
<TR><TD>14 > 3</TD><TD>${14 >3}</TD></TR>
<TR><TD>14 <= 3</TD><TD>${14 <=3}</TD></TR>
<TR><TD>14 >= 3</TD><TD>${14 >=3}</TD></TR>
<TR><TD>true && false</TD><TD>${true &&false}</TD></TR>
<TR><TD>true || false</TD><TD>${true ||false}</TD></TR>
<TR><TD>! false</TD><TD>${!false}</TD></TR>
<TR><TD>empty username</TD><TD>${emptyusername}</TD></TR>
<TR><TD>empty password</TD><TD>${emptypassword}</TD></TR>
</table>
</body>
</html>
可以参考文档:http://vdisk.weibo.com/s/hloWj