JSP中c:foreach遍历和s:iterator遍历异同实例分析

JSP中有两种常用的集合遍历方式:c:foreach和s:iterator。它们都可用于遍历Java集合对象,但在使用上有一些异同点。

JSP中有两种常用的集合遍历方式:c:foreach和s:iterator。它们都可用于遍历Java集合对象,但在使用上有一些异同点。

c:foreach遍历

c:foreach是JSTL的核心标签库之一,提供了一种简化集合遍历的方法。它的语法如下:

<c:forEach var="item" items="${collection}">
    <!-- 待遍历内容 -->
</c:forEach>

其中,var是当前遍历出的元素名称,items是待遍历的集合对象表达式。

下面是一个示例,在JSP页面中使用c:foreach输出ArrayList集合中的所有元素:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
    ArrayList<String> list = new ArrayList<String>();
    list.add("apple");
    list.add("banana");
    list.add("cherry");
    list.add("date");
    pageContext.setAttribute("list", list);
%>
<c:forEach var="item" items="${list}">
    ${item}<br/>
</c:forEach>

在这个示例中,我们首先将一个ArrayList对象存放在pageContext的属性中,然后使用c:foreach标签遍历list对象中的元素,并输出每一个元素。最后得到的输出结果是:

apple
banana
cherry
date

s:iterator遍历

s:iterator同样是JSTL标签库中的一个标签,其功能和c:foreach相似,但使用方式略有不同。它的语法如下:

<s:iterator value="collection" var="item">
    <!-- 待遍历内容 -->
</s:iterator>

其中,value是待遍历的集合对象属性表达式,var是当前遍历出的元素名称。

下面是一个示例,在JSP页面中使用s:iterator输出HashMap中的所有键值对:

<%@ taglib prefix="s" uri="/struts-tags" %>
<%
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("A", "Alpha");
    map.put("B", "Bravo");
    map.put("C", "Charlie");
    map.put("D", "Delta");
    request.setAttribute("map", map);
%>
<s:iterator value="%{#map}" var="entry">
    Key : ${entry.key}, Value : ${entry.value}<br/>
</s:iterator>

在这个示例中,我们首先将一个HashMap对象存放在request的属性中,然后使用s:iterator标签遍历map对象中的键值对,并输出每一个键值对。最后得到的输出结果是:

Key : A, Value : Alpha
Key : B, Value : Bravo
Key : C, Value : Charlie
Key : D, Value : Delta

异同分析

c:foreach和s:iterator在使用上有一些异同点。具体来说:

  • 语法不同:c:foreach使用items属性指定集合对象,s:iterator使用value属性指定集合对象。
  • 遍历对象不同:c:foreach只能遍历实现了java.util.Collection接口的集合对象,而s:iterator可以遍历任何实现了java.util.Iterable接口的对象。
  • 变量作用域不同:c:foreach的遍历变量只在标签范围内有效,而s:iterator的遍历变量可以在标签外面继续使用。
  • 访问方式不同:c:foreach的遍历变量以EL表达式${}的形式访问,而s:iterator的遍历变量需要用${entry.key}和${entry.value}的方式分别访问键和值。

综上所述,c:foreach和s:iterator都是JSP中常用的集合遍历标签,各有优劣。在实际开发中,需要根据具体需求来选择使用哪一种遍历方式。

本文标题为:JSP中c:foreach遍历和s:iterator遍历异同实例分析

基础教程推荐