【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,代码更加简洁,可读性更好,后期维护的代价小。

原文地址:https://www.cnblogs.com/wangmei/p/5190847.html