JSTL常用标签6

JSTL常用标签:

1、EL表达式可以取出Java Bean以及单个属性的值,在页面中使用${..},但是不能遍历集合。 使用JSTL可以遍历集合,因此使用EL和JSTL配合使用,基本上可以实现所有的功能。

2、在使用标签的页面中,头部需要引入文件,我的公司实际项目引入以下的标签:

<%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

3、<c:out/>标签

用法:<c:out value="${param.Action}"></c:out>

等效于EL表达式中的${param.action},其中 <c:out/>标签有属性default以及escapeXml,如果value的值不存在会输出default的值,escapeXml为 true会对输出的内容进行编码(只对特殊字符&,“>”,"<");

<c:out value="${param.Action}" default="aaaa"  ></c:out> <c:out value='${"<>"}' escapeXml="true"  ></c:out>-------&lt;&gt;

4、<c:if/>标签  

用法:<c:if test="${param.action=='add'}"></c:if>

 == -----eq;

 >  -----gt;  

< ------lt;

 5、<c:choose/> 、<c:when/>、<c:otherwise/>标签  

用法:  <c:choose>

      <c:when test="${param.action=='12'}">   

         when标签的输出

     </c:when>

     <c:otherwise>    

        otherwise标签的输出 

     </c:otherwise>

    </c:choose>

 6、<c:forEach/>标签

  var 定义变量的名称,begin定义开始的位置,end定义结束的位置,step定义步长  

 (1)<c:forEach/>标签遍历List  

   用法:<c:forEach items="${personlist}" var="data">    <tr>       <td>${data.age}</td>    </tr>  </c:forEach>

 (2) <c:forEach/>标签遍历Map对象

   Map也是集合类,但是由于Map中存储的是一对属性,因此遍历Map与遍历List、set String[]不同  

  <forEach items="${mapperson}" var="data">

   <tr>

       <td>${data.key}</td>   

     <td>${data.value}</td>   

     </tr>   

 </forEach>   

(3)<c:forEach/>标签的varStatus属性

   当前被遍历对象的信息被记录在varStatus里,通过varStatus即可获取当前遍历对象的信息。   

  varStatus的属性:   

  index:返回当前对象是第几个对象。从0开始计数。   

  count:返回已经遍历了多少对象。从1开始计数。   

  first:返回当前对象是否是第一个对象   

  last:返回当前对象是否是最后一个对象。   

  current:返回当前被遍历的对象。  

  begin:返回forEach标签begin属性的值。   

  end:返回forEach标签end属性的值。   

  step:返回forEach标签step属性的值。

7、<forTokens/>标签

  forTokens标签与forEach标签类似,都有begin、end、step、items等属性,可以循环遍历items属性的值。

   不同的是forEach标签里的items属性里面是集合类对象或者是数组,而forTokens标签里的items属性里面是字符串。 这个字符串会被delims属性内容分割成多个字符串。

   <c:forTokens items="aa,bb,cc,dd" delims="," var="data" varStatus="status" begin="1" end="2">

        <tr> <td>${data}</td> </tr>

  </c:forTokens>

8、<c:set/>标签以及<forEach/>遍历数组

     <c:set var="names" value="${fn:split(strlist,',')}"/>

 <forEach var="name" items="${names}">  ${name} </forEach>

9、<c:set/>标签

能够实现写的功能。既可以声明一个不存在的对象,也可以修改一个已经存在的对象,还可以修改对象的某个属性,前提是该属性是可写的  (即有对应的setter方法)。  set标签有5个属性:

  var :是set的对象名,如果该对象不存在则生成,如果存在则修改。  

  value:是set进去的值,可以是El表达式。

  scope:声明该对象的范围,取值可以为Session 、request、page、application等,默认为page。  

  target:作用类似于var,不同的是target只能用来操作Java Bean或者Map。target和var的功能是互补的,二者不能同时使用。target只能接受  El表达式,而var不能接受EL表达式。   target一般与property一块使用。如果target为Java Bean,则property为Java Bean的一个属性,则不存在会抛错。  如果target为Map,则property为Map的一个Key,如果不存在会创建。  target只能修改已经存在的Java Bean的属性或者Map的内容。

 var 只能设置Integer、Double、Float、String等类型的数据,而不能操作Java Bean或者Map等复杂数据类型。

原文地址:https://www.cnblogs.com/mzzy/p/3963806.html