JSTL之循环控制标签<c:foreach>
博客分类: JSTL
C++C#CJavaServlet.
实例:
JstlCoreServlet.java代码如下:
package com.bjpowernode.jstl;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 测试jstl核心库
* @author Administrator
*
*/
public class JstlCoreServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//普通字符串
request.setAttribute("hello", "hello world");
//html字符串
request.setAttribute("welcome", "<font color='red'>北京欢迎你</font>");
//条件控制标签
request.setAttribute("v1", 1);
request.setAttribute("v2", 2);
List userList = new ArrayList();
userList.add("user1");
userList.add("user2");
request.setAttribute("userlist", userList);
//结构
Group group = new Group();
group.setName("动力节点");
List users = new ArrayList();
for (int i=0; i<10; i++) {
User user = new User();
user.setUsername("User_" + i);
user.setAge(20 + i);
user.setGroup(group);
users.add(user);
}
request.setAttribute("users", users);
//map
Map map = new HashMap();
map.put("key1", "value1");
map.put("key2", "value2");
request.setAttribute("map", map);
//forTokens
request.setAttribute("strTokens", "a#b#c#d");
request.getRequestDispatcher("/jstl_core.jsp").forward(request, response);
}
}
jstl_core.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="java.util.*" %>
<%@ page import="com.bjpowernode.jstl.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<h1>测试JSTL核心库</h1>
<hr>
<li>循环控制标签c:forEach</li><br>
<h1>采用jsp脚本取得用户列表</h1>
<table border="1">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>所属组</td>
</tr>
<%
List users = (List)request.getAttribute("users");
if (users == null || users.size() == 0) {
%>
<tr>
<td colspan="3">没有符合条件的数据</td>
</tr>
<%
}else {
for (Iterator iter=users.iterator(); iter.hasNext();) {
User user = (User)iter.next();
%>
<tr>
<td><%=user.getUsername() %></td>
<td><%=user.getAge() %></td>
<td><%=user.getGroup().getName() %></td>
</tr>
<%
}
}
%>
</table>
<P>
<h1>采用jstl标签取得用户列表</h1>
<table border="1">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>所属组</td>
</tr>
<c:choose>
<c:when test="${empty users}">
<tr>
<td colspan="3">没有符合条件的数据</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.group.name }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<p>
<li>循环控制标签c:forEach,varstatus</li><br>
<table border="1">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>所属组</td>
</tr>
<c:choose>
<c:when test="${empty users}">
<tr>
<td colspan="3">没有符合条件的数据</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users}" var="user" varStatus="vs">
<c:choose>
<c:when test="${vs.count % 2 == 0}">
<tr bgcolor="red">
</c:when>
<c:otherwise>
<tr>
</c:otherwise>
</c:choose>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.group.name }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<li>循环控制标签c:forEach,begin,end,step</li><br>
<table border="1">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>所属组</td>
</tr>
<c:choose>
<c:when test="${empty users}">
<tr>
<td colspan="3">没有符合条件的数据</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users}" var="user" begin="2" end="8" step="2">
<tr>
<td>
<c:out value="${user.username}"/>
</td>
<td>
<c:out value="${user.age}"/>
</td>
<td>
<c:out value="${user.group.name}"/>
</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<li>循环控制标签c:forEach,输出map</li><br>
<c:forEach items="${map}" var="v">
${v.key }=${v.value }<br>
</c:forEach>
</body>
</html>
说明:在表格中通常需要隔一行换一个背景,比如偶数行背景为红色,奇数行背景为白色,可采用jstl中的c:foreach来控制。见本例中的:“循环控制标签c:forEach,varstatus”处。
分享到:
相关推荐
<c:forEach> 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行<c:forEach>的本体内容。 语法 语法1:迭代一集合对象之所有成员 <c:forEach [var="varName...
1. `<c:forEach>`:用于遍历集合、数组或迭代对象,实现循环操作。 2. `<c:forTokens>`:对字符串进行分割,然后对每个分割出来的元素进行循环处理。 **使用JSTL的好处**: - 提高代码的可读性:通过使用XML样式的...
<% Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); request.setAttribute("myMap", map); %> ... <!-- 遍历键 --> <c:forEach items="${myMap.keySet()}" var=...
在JSP(JavaServer Pages)开发中,`<c:forEach>` 是一个非常重要的标签,它属于JSTL(JavaServer Pages Standard Tag Library)的一部分,主要用于循环处理集合、数组等数据结构。相较于传统的JSP Scriptlets,使用...
在这个主题"**c标签-if-foreach-jar**"中,主要涉及到的是JSTL的两个核心标签`<c:if>`和`<c:forEach>`,它们是JSTL提供的条件判断和循环控制标签,通常与`jstl.jar`包一起使用。 首先,让我们详细了解**<c:if>**...
List<ProductAttributeMetaEntity> pamList = new ArrayList<>(); pamList = productAttributeMetaService.queryByChannel("陈酒频道"); for (int i = 0; i < pamList.size(); i++) { ProductProperty pp = new ...
C标签库提供了一些类似于Java编程中的控制结构,例如`<c:if>`, `<c:forEach>`, `<c:choose>`, `<c:set>`等,这些标签能够帮助开发者更方便地在JSP页面上进行逻辑处理,而无需过多地编写脚本let或Java表达式。...
- 动态Include使用`<jsp:include>`的page属性,每次请求都会检查包含文件的最新内容,适合包含动态生成的内容。 7. **HTTP请求转发与重定向**: - `RequestDispatcher.forward()`用于请求转发,客户端浏览器地址...
这是一个jsp+javaBean+servlet分页 主要功能 是通过 jstl标签中的 <c:forEach 中的开始 begin和末尾end、list结果集的items属性 操作整个分页。大家有兴趣看看
<c:forEach items="${options}" var="option"> <input type="radio" name="choice" value="${option.value}">${option.label} </c:forEach> ``` 这段代码会遍历一个名为`options`的列表,为每个选项生成一个`radio...
- **迭代标签**:`<c:forEach>`、`<c:forTokens>`,实现循环遍历。 - **URL操作标签**:`<c:import>`、`<c:param>`、`<c:url>`、`<c:redirect>`,用于处理URL相关的操作。 **4. 使用JSTL的步骤** 1. 将JSTL的`....
<c:forEach var="item" items="${list}" varStatus="status"> <!-- 循环体内容 --> </c:forEach> ``` - **示例**: ```jsp <c:forEach var="name" items="${list}" varStatus="i"> ${i.index} // 从0开始的...
这个“一个类似foreach的简单自定义标签”是一个示例,它实现了与JSTL(JavaServer Pages Standard Tag Library)中的`<c:forEach>`标签类似的功能,用于遍历集合数据并进行渲染。 自定义标签的核心在于TLD(Tag ...
<c:forEach items="${yourList}" var="item"> ${item} </c:forEach> ``` - **`<c:remove>`**: 用于删除一个变量。例如: ```jsp <c:remove var="name"/> ``` 3. **JSTL与EL(Expression Language)的配合**...
在这里,`${cartItems}`是一个服务器端传来的购物车项目集合,`<c:forEach>`标签遍历并展示每个项目的名称和价格。 总之,访问当当购物车页面节点涉及HTML元素的理解、DOM操作以及JSP的服务器端逻辑处理。通过熟练...
首先,我们需要理解JSTL的核心标签库`<c:forEach>`和`<c:if>`,它们将在动态合并单元格的过程中起到关键作用。`<c:forEach>`用于遍历集合,而`<c:if>`用于执行条件判断。 第一种方法是基于列的合并。假设我们有一个...
除了这些,JSTL还提供了其他标签,如`<c:set>`用于设置变量,`<c:if>`和`<c:choose>`进行条件判断,`<c:forEach>`进行循环遍历,等等。使用JSTL可以使JSP代码更加整洁,更易于理解和维护,是现代JSP开发中的重要工具...
- `<c:forEach>`:遍历集合中的元素,通过`items`属性指定集合,`var`属性定义迭代变量。例如: ``` <c:forEach items="${paramValues.Habit}" var="habit"> ${habit} </c:forEach> ``` 这段代码会遍历请求...
在JavaServer Pages (JSP)中,`<c:forEach>`标签是用于遍历集合对象,如数组、列表、集合、Map等,是JSTL (JavaServer Pages Standard Tag Library)的一部分。在这个大作业报告中,学生李田深入学习并实现了类似的...
C标签库是JSTL的一部分,它包含了类似于Java语言的循环和条件语句的标签,如`<c:forEach>`、`<c:if>`、`<c:choose>`等。这些标签使得JSP开发者能够更清晰地组织代码,而不是直接在页面上写Java脚本。例如,`<c:...