SpringMVC中JSTL的C标签库以及用法

  • Post author:
  • Post category:其他


一、JSTL的C标签库使用


(一)<c:forEach>用于循环遍历,输出所有的元素

使用<c:forEach>要先导入标签库:<%@taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>    才可以以使用。


(二)<c:forEach>的参数及用法:


items 用于接收集合对象,


var 定义对象接收从集合里遍历出的每一个元素。同时其会自动转型



begin 定义遍历的开始位置,



end定义遍历的结束位置。begin 和end的引号必须写。




varStatus 表示当前集合的状态,可以访问当前集合元素的信息。





使用方法示例:





<c:forEach var=”item” items=”${webFrameworkList}”>${item}</c:forEach>






循环遍历,输出一个范围类的元素。



<c:foreach items =”${lis}” var = “li ” begin=”2″ end =”12″>



${li}



</c:foreach>







(三)varStatus的用法






JSTL中的varStatus和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态。


特性         Getter                       描述current    getCurrent()  当前这次迭代的(集合中的)项

index       getIndex()               当前这次迭代从 0 开始的迭代索引

count       getCount()             当前这次迭代从 1 开始的迭代计数

first          isFirst()                  用来表明当前这轮迭代是否为第一次迭代的标志

last          isLast()                  用来表明当前这轮迭代是否为最后一次迭代的标志

begin      getBegin()             begin 属性值

end         getEnd()                 end 属性值

step        getStep()                step 属性值

使用方法示例:

循环遍历,输出除某个元素以外的元素或输出指定元素。
<c:foreach items="${list}" var ="li" varStatus="status">
<c:if text="${status.count==1}>
${"第一个元素不要"}
</c:if>
${li}
</ c:foreach>							

一、jstl标签介绍:jstl标签是为了解决EL表达式不能循环取出集合对象的问题,是建立在EL表达式基础上的语言,两者之间是互通的,

属于jsp外部的一个标准标签,库导入标签格式为:<%@ taglib uri=”http://

Java

.sun.com/jsp/jstl/core” prefix=”c” %>

二、各种标签的用法



1、输出<c:out>



语法:

Java代码


  1. <c:out value=

    “expression”


    default

    =

    “expression”

    escapeXml=

    “boolean”

    />


说明:

该标记对由其 value 属性指定的表达式进行求值,然后打印结果。如果指定了可选属性 default,那么,在对 value 属性的表达式求值所得结果为 null 或空 String 的情况下,<c:out> 将打印其值。  escapeXml 属性也是可选的。它控制当用 <c:out> 标记输出诸如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 &lt;、&gt; 和 &amp;)。

例:

Java代码
收藏代码


  1. <c:out value=

    “${user.company}”

    escapeXml==

    “false”

    />



2、赋值<c:set>



语法:

Java代码
收藏代码


  1. <c:set var=

    “name”

    scope=

    “scope”

    value=

    “expression”

    />


说明:

<c:set> 操作提供基于标记的机制来创建和设置限制了作用域的变量。其中 var 属性指定了限制了作用域的变量的名称,scope 属性表明了该变量驻留在哪个作用域中,value 属性指定了分配给该变量的值。如果指定变量已经存在,则简单地将所指明的值赋给它。如果不存在,则创建新的限制了作用域的变量,并用该值初始化这个变量。  scope 属性是可选的,其缺省值是 page。

例:

Java代码
收藏代码


  1. <c:set var=

    “timezone”

    scope=

    “session”

    value=

    “CST”

    />

  2. <c:set var=

    “square”

    value=

    “${param[‘x’] * param[‘x’]}”

    />



3、循环



语法:

Java代码
收藏代码


  1. <c:forEach var=

    “name”

    items=

    “expression”


  2. varStatus=

    “name”

    begin=

    “expression”


  3. end=

    “expression”

    step=

    “expression”

    >

  4. body content

  5. </c:forEach>


说明:

begin 和 end 属性要么是静态整数值,要么是可以得出整数值的表达式。它们分别指定迭代索引的初始值以及迭代索引的终止值。当使用 <c:forEach> 在整数范围内进行迭代时,这两个属性是必需的,而其它所有属性都是可选的。  当出现 step 时,它也必须是整数值。它指定每次迭代后索引的增量。  如果指定了 var 属性,那么将会创建一个带有指定名称的并限定了作用域的变量,并将每次迭代的当前索引值赋给该变量。  items 属性的值应该是一个集合,对该集合的成员进行迭代,通常使用 EL 表达式指定值。  和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。

例:

Java代码
收藏代码


  1. <table>

  2. <c:forEach items=


  3. “${entryList}”

    var=

    “blogEntry”

    varStatus=

    “status”

    >

  4. <tr><td align=

    “left”


    class

    =

    “blogTitle”

    >

  5. <c:out value=

    “${status.count}”

    />.

  6. <c:out value=

    “${blogEntry.title}”

    escapeXml=

    “false”

    />

  7. </td></tr>

  8. <tr><td align=

    “left”


    class

    =

    “blogText”

    >

  9. <c:out value=

    “${blogEntry.text}”

    escapeXml=

    “false”

    />

  10. </td></tr>

  11. </c:forEach>

  12. </table>



4、If判断



语法:

Java代码
收藏代码


  1. <c:

    if

    test=

    “expression”

    var=

    “name”

    scope=

    “scope”

    >

  2. body content

  3. </c:

    if

    >


说明:

测试表达式(test属性值)进行求值,接下来,仅当对表达式求出的值为 true 时,它才处理标记的主体内容  <c:if> 通过其 var 和 scope 属性(它们所起的作用和在 <c:set> 中所起的作用一样)选择将测试结果赋给限定了作用域的变量。

例:

Java代码
收藏代码


  1. <table>

  2. <c:forEach items=


  3. “${entryList}”

    var=

    “blogEntry”

    varStatus=

    “status”

    >

  4. <c:

    if

    test=

    “${status.first}”

    >

  5. <tr><td align=

    “left”


    class

    =

    “blogDate”

    >

  6. <c:out value=

    “${blogEntry.created}”

    />

  7. </td></tr>

  8. </c:

    if

    >

  9. <tr><td align=

    “left”


    class

    =

    “blogTitle”

    >

  10. <c:out value=

    “${blogEntry.title}”

    escapeXml=

    “false”

    />

  11. </td></tr>

  12. <tr><td align=

    “left”


    class

    =

    “blogText”

    >

  13. <c:out value=

    “${blogEntry.text}”

    escapeXml=

    “false”

    />

  14. </td></tr>

  15. </c:forEach>

  16. </table>



Choose操作语法



语法:

Java代码


  1. <c:choose>

  2. <c:when test=

    “expression”

    >

  3. body content

  4. </c:when>



  5. <c:otherwise>

  6. body content

  7. </c:otherwise>

  8. </c:choose>


说明:

每个要测试的条件都由相应的 <c:when> 标记来表示,至少要有一个 <c:when> 标记。只会处理第一个其 test 值为 true 的 <c:when> 标记体内的内容。如果没有一个 <c:when> 测试返回 true ,那么会处理 <c:otherwise> 标记的主体内容。

例:

Java代码


  1. <c:choose>

  2. <c:when test=

    “${pageContext.request.scheme eq ‘http’}”

    >

  3. This is an insecure Web session.

  4. </c:when>

  5. <c:when test=

    “${pageContext.request.scheme eq ‘https’}”

    >

  6. This is a secure Web session.

  7. </c:when>

  8. <c:otherwise>

  9. You are using an unrecognized Web protocol. How did

    this

    happen?!

  10. </c:otherwise>

  11. </c:choose>



<c:url> 操作的语法



语法:

Java代码


  1. <c:url value=

    “expression”

    context=

    “expression”

    var=

    “name”

    scope=

    “scope”

    >

  2. <c:param name=

    “expression”

    value=

    “expression”

    />



  3. </c:url>


说明:

<c:url> 标记,用于生成 URL。  value 属性用来指定基本 URL,然后在必要时标记对其进行转换。如果这个基本 URL 以一个斜杠开始,那么会在它前面加上 servlet 的上下文名称。可以使用 context 属性提供显式的上下文名称。如果省略该属性,那么就使用当前 servlet 上下文的名称。这一点特别有用,因为 servlet 上下文名称是在部署期间而不是开发期间决定的。(如果这个基本 URL 不是以斜杠开始的,那么就认为它是一个相对 URL,这时就不必添加上下文名称。)  如果通过嵌套 <c:param> 标记指定了任何请求参数,那么将会使用 HTTP GET 请求的标准表示法将它们的名称和值添加到生成的 URL 后面。此外,还进行 URL 编码:为了生成有效的 URL,将对这些参数的名称或值中出现的任何字符适当地进行转换。

例:

Java代码


  1. <a href=

    “<c:url value=’/content/sitemap.jsp’/>”

    >View sitemap</a>

  2. <c:url value=

    “/content/search.jsp”

    >

  3. <c:param name=

    “keyword”

    value=

    “${searchTerm}”

    />

  4. <c:param name=

    “month”

    value=

    “02/2003”

    />

  5. </c:url>



<c:redirect> 操作的语法



语法:

Java代码


  1. <c:redirect url=

    “expression”

    context=

    “expression”

    >

  2. <c:param name=

    “expression”

    value=

    “expression”

    />



  3. </c:redirect>


说明:

<c:redirect>用于向用户的浏览器发送 HTTP 重定向响应,它是 JSTL 中与 javax.servlet.http.HttpServletResponse 的 sendRedirect() 方法功能相当的标记。

例:

Java代码


  1. <c:

    catch

    var=

    “exception”

    >

  2. <c:

    import

    url=

    “ftp://ftp.example.com/package/README”

    />

  3. </c:

    catch

    >

  4. <c:

    if

    test=

    “${not empty exception}”

    >

  5. <c:redirect url=

    “/errors/remote.jsp”

    />

  6. </c:

    if

    >


所有使用c标签的过程中,使用了var属性,代表保存了该数据,则都可以通过EL表达式取出,${var的变量名}。



版权声明:本文为qq30211478原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。