Welcome

首页 / 网页编程 / JSP / JSP中c:foreach遍历和s:iterator遍历异同实例分析

本文实例分析了JSP中c:foreach遍历和s:iterator遍历的异同。分享给大家供大家参考。具体如下:
①jstl c:foreach
首先我们来看一个普通的servlet:
import com.xy.entity.Board;import com.xy.entity.Topic;import com.xy.entity.User;public class ToMainAction extends HttpServlet{ private IBoarderDao boardDao = new BoardDaoImpl(); private ITopicDao topicDao = new TopicDaoImpl(); private IUserDao userDao = new UserDaoImpl(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { // 板块列表 List<Board> boards = boardDao.getAllBoard(); List<Integer> count = new ArrayList<Integer>(); List<User> users = new ArrayList<User>(); List<Topic> lastTopic = new ArrayList<Topic>(); if (null != boards) {for (Board b : boards){// 回帖数List<Topic> topic = topicDao.getTopicByBoardId(b.getborderId());if(null!=topic){ int num = topic.size(); count.add(num);}else{ count.add(0);}// 最近更新Topic t = topicDao.getLastTopic(b.getborderId());lastTopic.add(t);// 最近更新的作者User u = userDao.getUserByuId(t.getUid());users.add(u);}request.setAttribute("boards", boards);request.setAttribute("count", count);request.setAttribute("users", users);request.setAttribute("lastTopic", lastTopic);RequestDispatcher dis = request.getRequestDispatcher("main.jsp");dis.forward(request, response); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }}
main.jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><c:if test="${requestScope.boards!=null}"> <c:forEach var="b" items="${requestScope.boards}" varStatus="status"> <tr> <td width="6%" height="68"> </td> <td width="67%"><div align="left" class="blueSpan"><img src="images/topic.gif" width="18" height="21" /><a href="logined/ToListAction?boardId=${b.borderId}">${b.borderName}</a></div> </td> <td>${requestScope.count[status.index]} </td> <td><p align="left">${requestScope.lastTopic[status.index].title}</p><br /><p align="left">${requestScope.users[status.index].userName}</p><br /><p align="left">修改时间:<br>${requestScope.lastTopic[status.index].modifyTime}</p><br /> </td> </tr> </c:forEach></c:if>
②s:iterator
package com.xy.action;actionpublic class ToMainAction extends ActionSupport implements RequestAware{ private IBoarderDao boardDao = new BoardDaoImpl(); private ITopicDao topicDao = new TopicDaoImpl(); private IUserDao userDao = new UserDaoImpl(); private Map<String, Object> request; public void setBoardDao(IBoarderDao boardDao) { this.boardDao = boardDao; } public void setTopicDao(ITopicDao topicDao) { this.topicDao = topicDao; } public void setUserDao(IUserDao userDao) { this.userDao = userDao; } public String execute() { // 板块列表 List<Board> boards = boardDao.getAllBoard(); List<Integer> count = new ArrayList<Integer>(); List<User> users = new ArrayList<User>(); List<Topic> lastTopic = new ArrayList<Topic>(); if (null != boards) {for (Board b : boards){// 回帖数List<Topic> topic = topicDao.getTopicByBoardId(b.getBorderId());if (null != topic){ int num = topic.size(); count.add(num);} else{ count.add(0);}// 最近更新Topic t = topicDao.getLastTopic(b.getBorderId());lastTopic.add(t);// 最近更新的作者User u = userDao.getUserByuId(t.getUid());users.add(u);}request.put("boards", boards);request.put("count", count);request.put("users", users);request.put("lastTopic", lastTopic); } return SUCCESS; } public void setRequest(Map<String, Object> request) { this.request = request; }}
main.jsp:
<%@ taglib uri="/struts-tags" prefix="s"%><s:if test="#request.boards!=null"> <s:iterator value="#request.boards" id="b" status="st"> <tr> <td width="6%" height="68"> </td> <td width="67%"> <div align="left" class="blueSpan"><img src="images/topic.gif" width="18" height="21" /><a href="logined/ToListAction?boardId="+<s:property value="#b.borderId"/>+"> <s:property value="#b.borderName" /></a></div> </td> <td><s:property value=" #request.count[#st.index]" /> </td> <td> <br /><p align="left"><s:property value="#request.lastTopic[#st.index].title" /></p> <br /><p align="left"><s:property value=" #request.lastTopic[#st.index].userName" /></p> <br /><p align="left">修改时间: <br/><s:property value=" #request.lastTopic[#st.index].modifyTime" /></p><br /> </td> </tr></s:iterator></s:if>
希望本文所述对大家的JSP程序设计有所帮助。