【JSTL】--JSTL表达式:c:forEach--drp215
JstlCoreServlet:
/** * */ package com.bjpowrnode.jstl; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @ClassName:JstlCoreServlet * @Description:TODO * @author wm * @date 2016年2月15日上午11:40:32 */ public class JstlCoreServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //普通字符串 request.setAttribute("hello","Hello World!"); request.setAttribute("welcome", "<font color='red'>欢迎你来到这个世界!</font>"); //条件控制标签、 request.setAttribute("v1", 10); request.setAttribute("v2", 20); request.setAttribute("userList", new ArrayList()); //结构 Group group =new Group(); group.setName("动力节点drp 603班"); List users=new ArrayList(); for(int i =0;i<10;i++){ User user=new User(); user.setUsername("张三_"+i ); user.setAge(23+i); user.setGroup( group); users.add(user); } request.setAttribute("users", users); request.getRequestDispatcher("/jstl_core.jsp").forward(request, response); } }
jstl_core.jsp:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ page import="com.bjpowrnode.jstl.*" %> <%@ page import="java.util.*" %> <!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:out标签</li><br> hello(使用标签:)<c:out value="123"/><br> hello(使用标签:)<c:out value="hello"/><br> hello(使用标签:)<c:out value="${hello}"/><br> hello(使用标签:EL表达式)${hello}<br> hello(default):${hello123 }<br> hello(使用缺省值):<c:out value="${hello123 }" default="没有值"/><br> hello(使用缺省值):<c:out value="${hello123 }" >没有值</c:out><br> Welcome(使用EL表达式):${welcome}<br> welcome(使用标签,escapeXml=true):<c:out value="${welcome }" escapeXml="true"/><br> welcome(使用标签,escapeXml=false):<c:out value="${welcome }" escapeXml="false"/><br> <p> <li>测试 c:set ,c:remove</li><br> <c:set value="root" var="userid"/> userid:${userid}<br> <c:remove var="userid"/> userid:${userid }<br> <p> <li>条件控制标签c:if</li><br> <c:if test="${v1 lt v2 }"> v1小于v2 </c:if> <p> <li>条件控制标签:c:choose,c:when,c:otherwise</li><br> <c:choose> <c:when test="${v1 gt v2 }"> v1大于v2<br> </c:when> <c:otherwise> v1小于v2<br> </c:otherwise> </c:choose> <c:choose> <c:when test="${empty userList }"> 没有符合条件的数据<br> </c:when> <c:otherwise> 存在用户数据<br> </c:otherwise> </c:choose> <p> <li>演示循环控制标签:forEach</li><br> <h3>采用jsp脚本显示</h3> <table border="1"> <tr> <td>用户名称</td> <td>年龄</td> <td>所属组</td> </tr> <% List userList=(List)request.getAttribute("users"); if(userList==null || userList.size()==0){ %> <tr> <td colspan="3">没有符合条件的数据</td> </tr> <% }else{ for(Iterator iter=userList.iterator();iter.hasNext();){ User user=(User)iter.next(); %> <tr> <td><%=user.getUsername() %></td> <td><%=user.getAge()%></td> <td><%=user.getGroup().getName() %></td> </tr> <% } } %> </table> <h3>采用forEach标签</h3> <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> </body> </html>
c:forEach相对于jsp,代码更加简洁,可读性更好,后期维护的代价小。