JSTL使用及EL运算符的使用

时间:2022-11-01 22:28:40

JSTL使用

JSTL标记库由以下标记组成:

  • core:核心标签,流程控制, 处理作用域变量, 变量的显示, 异常的处理, url的处理;
  • formatting:日期, 时间, 数字等的有关i18n的格式化处理;
  • xml:解析xml和通过xsl转换文档格式的处理;
  • sql:SQL数据库操作的处理。

比较常用的是coreformatting标签。xml标签用于特定场景的数据显示,sql标签用于敏捷开发(j2ee开发为了分工和关注分离,往往通过daojava代码中封装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