您的位置:首页 > Web前端 > JavaScript

测试JSTL表达式 .

2014-03-25 15:54 375 查看
JSTL一般要配合EL表达式一起使用,通过提供大多数 Web 应用程序常用功能的标准实现,JSTL 有助于加速开发周期。

一、JSTL和El表达式的关系

EL与四个 JSTL 定制标记库提供的操作结合起来允许页面作者不使用脚本元素即可实现表示层逻辑(不需要对表示层程序编写java代码),这极大地简化了 JSP 应用程序的维护。



二、使用方法:

1、如果只是使用EL表达式不需要引入任何jar包,只要jsp/servlet容器实现了J2EE1.4/Servlet2.4、JSP2.0规范就可以

2、JSTL标签的配置和使用:

(1) 将jstl.jar和standard.jar拷贝到WEB-INF/lib下

(2)在jsp页面使用:

采用taglib指令引入标签库(使用哪个引入哪个即可)

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>



(3)使用自定义函数:

* 定义类MyFunctions,方法必须为静态全局的

* 提供tld描述文件(仿照其他标准tld文件写即可),将tld放到WEB-INF或WEB-INF下的任意目录中

* 在jsp中采用taglib进行引入

* 在EL表达式中采用前缀+冒号+函数名的方式进行调用



三、测试示例:

项目概览





1、EL表达式

Servlet

[java]
view plaincopyprint?

package com.jialin.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;

/**
* 测试El表达式Servlet
* @author jialin
*
*/
public class ElServlet extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub

doPost(req, resp);
}

protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

Group group = new Group();
group.setGroupName("第一组");

//普通对象
User user = new User();
user.setGroup(group);
user.setName("张三");
user.setAge(17);

//map
Map map = new HashMap();
map.put("k1", "k1value");
map.put("k2", "k2value");

//字符串数组
String[] strArr = new String[] { "a", "b", "c", "d" };

// 对象数组\
User[] arrUser = new User[10];

for (int i = 0; i < arrUser.length; i++) {
arrUser[i] = new User();
arrUser[i].setName("张三" + i);

}

// List
List listUser = new ArrayList();

for (int i = 0; i <= 10; i++) {
User usr = new User();
usr.setName("战三" + i);
listUser.add(usr);
}

//放入request
request.setAttribute("arrUser", arrUser);
request.setAttribute("listUser", listUser);
request.setAttribute("arr", strArr);
request.setAttribute("map", map);
request.setAttribute("user", user);
request.setAttribute("v1", "");
request.setAttribute("v2", new ArrayList());
request.setAttribute("v3", null);
request.setAttribute("v4", "434");
request.setAttribute("hello", "Hello World");

//转发
request.getRequestDispatcher("/ElTest.jsp").forward(request, response);
}

}

package com.jialin.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;

/**
 * 测试El表达式Servlet
 * @author jialin
 *
 */
public class ElServlet extends HttpServlet {

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(req, resp);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		Group group = new Group();
		group.setGroupName("第一组");
        
		//普通对象
		User user = new User();
		user.setGroup(group);
		user.setName("张三");
		user.setAge(17);

		//map
		Map map = new HashMap();
		map.put("k1", "k1value");
		map.put("k2", "k2value");

		//字符串数组
		String[] strArr = new String[] { "a", "b", "c", "d" };

		// 对象数组\
		User[] arrUser = new User[10];

		for (int i = 0; i < arrUser.length; i++) {
			arrUser[i] = new User();
			arrUser[i].setName("张三" + i);

		}

		// List
		List listUser = new ArrayList();

		for (int i = 0; i <= 10; i++) {
			User usr = new User();
			usr.setName("战三" + i);
			listUser.add(usr);
		}

		//放入request
		request.setAttribute("arrUser", arrUser);
		request.setAttribute("listUser", listUser);
		request.setAttribute("arr", strArr);
		request.setAttribute("map", map);
		request.setAttribute("user", user);
		request.setAttribute("v1", "");
		request.setAttribute("v2", new ArrayList());
		request.setAttribute("v3", null);
		request.setAttribute("v4", "434");
		request.setAttribute("hello", "Hello World");
		
		//转发
		request.getRequestDispatcher("/ElTest.jsp").forward(request, response);
	}

}


jsp

[html]
view plaincopyprint?

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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>
<a href="servlet/ElServlet"></a>测试EL表达式
</h1>
<li>
普通字符串
</li>
<br />
Jsp脚本:<%=request.getAttribute("hello")%><br />

EL表达式:${hello}
<br />

RequestScope:${requestScope.hello}

<li>
结构
</li>

用户名:${user.name}
<br />
用户年龄:${user.age }
<br />
用户所属组:${user.group.groupName }
<br />

<li>
Map
</li>
<br />

map.k1:${map.k1}
<br />
map.k2:${map.k2 }

<br />
<li>
数组
</li>
<br />
arr[1]:${arr[1]};
<br />

<li>
对象数组
</li>
user数组:${arrUser[4].name }
<br />

<li>
List
</li>
userList:${listUser[5].name}
<br />


<br />
<li>
运算符
</li>
1+1=${1+1}
<br />
1*2=${1*2}
<br />
21/7=${21/7}
<br />
21 div 7=${21 div 7}
<br />
21 mode 7=${21 mod 7}
<br />
21 % 7=${21 % 7}

<br />
<li>
测试Empty
</li>
<br />
v1:${empty v1 }
<br />
v2:${empty v2 }
<br />
v3:${empty v3 }
<br />
v4:${empty v4 }
<br />
v5:${empty v5 }
<br />


</body>
</html>

<%@ page language="java" contentType="text/html; charset=GB18030"
	pageEncoding="GB18030"%>
<!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>
			<a href="servlet/ElServlet"></a>测试EL表达式
		</h1>
		<li>
			普通字符串
		</li>
		<br />
		Jsp脚本:<%=request.getAttribute("hello")%><br />

		EL表达式:${hello}
		<br />

		RequestScope:${requestScope.hello}

		<li>
			结构
		</li>

		用户名:${user.name}
		<br />
		用户年龄:${user.age }
		<br />
		用户所属组:${user.group.groupName }
		<br />

		<li>
			Map
		</li>
		<br />

		map.k1:${map.k1}
		<br />
		map.k2:${map.k2 }

		<br />
		<li>
			数组
		</li>
		<br />
		arr[1]:${arr[1]};
		<br />

		<li>
			对象数组
		</li>
		user数组:${arrUser[4].name }
		<br />

		<li>
			List
		</li>
		userList:${listUser[5].name}
		<br />

		<br />
		<li>
			运算符
		</li>
		1+1=${1+1}
		<br />
		1*2=${1*2}
		<br />
		21/7=${21/7}
		<br />
		21 div 7=${21 div 7}
		<br />
		21 mode 7=${21 mod 7}
		<br />
		21 % 7=${21 % 7}

		<br />
		<li>
			测试Empty
		</li>
		<br />
		v1:${empty v1 }
		<br />
		v2:${empty v2 }
		<br />
		v3:${empty v3 }
		<br />
		v4:${empty v4 }
		<br />
		v5:${empty v5 }
		<br />

	</body>
</html>



结果:



2、测试jstl

servlet

[java]
view plaincopyprint?

package com.jialin.jstl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
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;

/**
* 测试JSTLServlet
* @author jialin
*
*/
public class JstlServlet extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub

doPost(req, resp);
}

protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//字符串
request.setAttribute("str", "fdfsdfsd432");
request.setAttribute("strs", "fd#fs#dfsd#432");

//日期和数字
request.setAttribute("today", new Date());
request.setAttribute("num", new Double(1234567.123456789));
request.setAttribute("pnum", new Double(0.1233456));

//List
List listUser = new ArrayList();
for (int i = 0; i <= 10; i++) {
User usr = new User();
usr.setName("战三" + i);
usr.setAge(10);
Group group = new Group();
group.setGroupName("战三group" + i);
usr.setGroup(group);
listUser.add(usr);
}

//map
Map map = new HashMap();
map.put("k1", "k1value");
map.put("k2", "k2value");
map.put("k3", "k3value");
map.put("k4", "k4value");
map.put("k5", "k5value");
map.put("k6", "k6value");

//加入request
request.setAttribute("map", map);
request.setAttribute("listUser", listUser);
request.setAttribute("strTokens", "1@2@3@4@5@6@7");
request.setAttribute("v1", "10");
request.setAttribute("v2", "11");
request.setAttribute("hello", "hello world");
request.setAttribute("list", new ArrayList());
request.setAttribute("hello1","<font color=\"red\">hello world</font>");

//转发
request.getRequestDispatcher("/JstlTest.jsp").forward(request, response);
}

}

package com.jialin.jstl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
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;

/**
 * 测试JSTLServlet
 * @author jialin
 *
 */
public class JstlServlet extends HttpServlet {

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(req, resp);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
        //字符串
		request.setAttribute("str", "fdfsdfsd432");
		request.setAttribute("strs", "fd#fs#dfsd#432");
         
		//日期和数字
		request.setAttribute("today", new Date());
		request.setAttribute("num", new Double(1234567.123456789));
		request.setAttribute("pnum", new Double(0.1233456));

		//List
		List listUser = new ArrayList();
		for (int i = 0; i <= 10; i++) {
			User usr = new User();
			usr.setName("战三" + i);
			usr.setAge(10);
			Group group = new Group();
			group.setGroupName("战三group" + i);
			usr.setGroup(group);
			listUser.add(usr);
		}
        
		//map
		Map map = new HashMap();
		map.put("k1", "k1value");
		map.put("k2", "k2value");
		map.put("k3", "k3value");
		map.put("k4", "k4value");
		map.put("k5", "k5value");
		map.put("k6", "k6value");
		
		//加入request
		request.setAttribute("map", map);
		request.setAttribute("listUser", listUser);
		request.setAttribute("strTokens", "1@2@3@4@5@6@7");
		request.setAttribute("v1", "10");
		request.setAttribute("v2", "11");
		request.setAttribute("hello", "hello world");
		request.setAttribute("list", new ArrayList());
		request.setAttribute("hello1","<font color=\"red\">hello world</font>");
		
		//转发
		request.getRequestDispatcher("/JstlTest.jsp").forward(request, response);
	}

}


jsp

[html]
view plaincopyprint?

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://blog.csdn.net/shan9liang/myfunctions" prefix="my"%>

<!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>
<h4>
测试 JSTL
</h4>
<ui>
<li>
测试c:out标签
</li>
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="${hello2312}" default="hi" />
<br />
hello(使用标签):
<c:out value="${hello2312}" />
hi
<br />
hello world(使用EL表达式):${hello1}
<br />
hello world(使用escapeXML):
<c:out value="${hello1}" escapeXml="true" />
hi
<br />
hello world(使用escapeXML):
<c:out value="${hello1}" escapeXml="false" />
hi
<br />
<br />
<li>
测试c:set 标签
</li>
<c:set var="hi" value="hello world!" />
<br />
hi:${hi}
<br />
<c:set var="hoho" />
hi:${hoho}
<br />
<br />
<li>
测试 c:if 标签
</li>
<br />
<c:if test="${v1 < v2}">
“v1 < v2”
</c:if>
<br />
<br />
<li>
测试 c:choose c:when c:otherwise
</li>
<br />
<c:choose>
<c:when test="$(v1>v2)">
"v1>v2"
</c:when>
<c:otherwise>
"v1 < v2"
</c:otherwise>
</c:choose>
<br />
<c:choose>
<c:when test="${empty list}">
无数据
</c:when>
<c:otherwise>
有数据
</c:otherwise>
</c:choose>
<br />
<li>
测试 c:forEach
</li>
<table>
<tr>
<td>
姓名
</td>
<td>
年龄
</td>
<td>
组别
</td>
</tr>
<c:choose>
<c:when test="${empty listUser}">
<tr>
<td colspan="3">
没有数据
</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${listUser}" var="user">
<tr>
<td>
${user.name}
</td>
<td>
${user.age }
</td>
<td>
${user.group.groupName}
</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<br />
<li>
测试c:forEach varStatus
</li>
<table>
<tr>
<td>
姓名
</td>
<td>
年龄
</td>
<td>
组别
</td>
</tr>
<c:choose>
<c:when test="${empty listUser}">
<tr>
<td colspan="3">
没有数据
</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${listUser}" var="user" varStatus="vs">

<c:choose>
<c:when test="${vs.count % 2==0}">
<tr bgcolor="green">
<td>
${user.name}
</td>
<td>
${user.age }
</td>
<td>
${user.group.groupName}
</td>
</tr>
</c:when>
<c:otherwise>
<tr>
<td>
${user.name}
</td>
<td>
${user.age }
</td>
<td>
${user.group.groupName}
</td>
</tr>
</c:otherwise>
</c:choose>

</c:forEach>
</c:otherwise>
</c:choose>
</table>
<br />
<li>
测试forEach begin end
</li>

<table>
<tr>
<td>
姓名
</td>
<td>
年龄
</td>
<td>
组别
</td>
</tr>
<c:choose>
<c:when test="${empty listUser}">
<tr>
<td colspan="3">
没有数据
</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${listUser}" var="user" begin="2" end="7"
step="1">
<tr>
<td>
${user.name}
</td>
<td>
${user.age }
</td>
<td>
${user.group.groupName}
</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<li>
测试forEach 取出map中的值
</li>
<c:forEach items="${map}" var="entry">
${entry.key},${entry.value}<br />
</c:forEach>
<br />
<li>
测试forTokens
</li>
<c:forTokens items="${strTokens}" delims="@" var="t">
${t}<br />
</c:forTokens>
<li>
测试c:catch
</li>
<c:catch var="msg">
<%
Integer.parseInt("rewrw");
%>
</c:catch>
${msg}
<br />
<li>
测试 c:import
</li>
<c:import url="http://www.baidu.com"></c:import>
<li>
测试 c:url param
</li>
<c:url value="http://www.baidu.com" var="uri">
<c:param name="id1" value="321">
</c:param>
<c:param name="id2" value="876">
</c:param>
</c:url>
<br />
${uri}
<br />
<li>
测试 fn
</li>
<br />
str.length(函数必须放在EL表达式中,用法:前缀+冒号+函数名称):${fn:length(str)}
<br />
<c:forEach items="${fn:split(strs,\"#\")}" var="v1">
${v1 }<br />
</c:forEach>
<br />
${my:Hello("张三")}

<li>
测试 fmt
</li>
<br />
today(default)
<fmt:formatDate value="${today}" />
<br />
today(type="date")
<fmt:formatDate value="${today}" type="date" />
<br />
today(type="time")
<fmt:formatDate value="${today}" type="time" />
<br />
today(type="both")
<fmt:formatDate value="${today}" type="both" />
<br />
today(dateStyle="short")
<fmt:formatDate value="${today}" dateStyle="short" />
<br />
today(dateStyle="medium")
<fmt:formatDate value="${today}" dateStyle="medium" />
<br />
today(dateStyle="long")
<fmt:formatDate value="${today}" dateStyle="long" />
<br />
today(dateStyle="full")
<fmt:formatDate value="${today}" dateStyle="full" />
<br />
today(pattern="yyyy/MM/dd hh:mm:ss")
<fmt:formatDate value="${today}" pattern="yyyy/MM/dd HH:mm:ss" />
<br />
<fmt:formatDate value="${today}" pattern="yyyy/MM/dd HH:mm:ss"
var="nowDate" />
<br />
${nowDate }
<br />

<li>
测试格式化数字
</li>
<br />
number(default)
<fmt:formatNumber value="${num}" />
<br />
number(pattern="###,###,###.####")
<fmt:formatNumber value="${num}" pattern="###,###,###.####" />
<br />
number(pattern="###,###,###.000")
<fmt:formatNumber value="${num}" pattern="###,###,###.000" />
<br />
number(groupingUsed="false")
<fmt:formatNumber value="${num}" groupingUsed="false" />
<br />
number(minIntegerDigits="10" maxIntegerDigits="10")
<fmt:formatNumber value="${num}" minIntegerDigits="10"
maxIntegerDigits="10" />
<br />
number(minFractionDigits="4" maxFractionDigits="5")
<fmt:formatNumber value="${num}" minFractionDigits="4"
maxFractionDigits="5" />
<br />
number(type="currency")
<fmt:formatNumber value="${num}" type="currency" />
<br />
number(type="currency" currencySymbol="$")
<fmt:formatNumber value="${num}" type="currency" currencySymbol="$" />
<br />
number(type="percent" maxFractionDigits="5" minFractionDigits="3")
<fmt:formatNumber value="${pnum}" type="percent" maxFractionDigits="5"
minFractionDigits="3" />
<br />
<br />

</body>
</html>

<%@ page language="java" contentType="text/html; charset=GB18030"
	pageEncoding="GB18030"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://blog.csdn.net/shan9liang/myfunctions" prefix="my"%>

<!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>
		<h4>
			测试 JSTL
		</h4>
		<ui>
		<li>
			测试c:out标签
		</li>
		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="${hello2312}" default="hi" />
		<br />
		hello(使用标签):
		<c:out value="${hello2312}" />
		hi
		<br />
		hello world(使用EL表达式):${hello1}
		<br />
		hello world(使用escapeXML):
		<c:out value="${hello1}" escapeXml="true" />
		hi
		<br />
		hello world(使用escapeXML):
		<c:out value="${hello1}" escapeXml="false" />
		hi
		<br />
		<br />
		<li>
			测试c:set 标签
		</li>
		<c:set var="hi" value="hello world!" />
		<br />
		hi:${hi}
		<br />
		<c:set var="hoho" />
		hi:${hoho}
		<br />
		<br />
		<li>
			测试 c:if 标签
		</li>
		<br />
		<c:if test="${v1 < v2}">
  				“v1 < v2” 
		</c:if>
		<br />
		<br />
		<li>
			测试 c:choose c:when c:otherwise
		</li>
		<br />
		<c:choose>
			<c:when test="$(v1>v2)">
				"v1>v2"
			</c:when>
			<c:otherwise>
				"v1 < v2"
			</c:otherwise>
		</c:choose>
		<br />
		<c:choose>
			<c:when test="${empty list}">
				无数据
			</c:when>
			<c:otherwise>
				有数据
			</c:otherwise>
		</c:choose>
		<br />
		<li>
			测试 c:forEach
		</li>
		<table>
			<tr>
				<td>
					姓名
				</td>
				<td>
					年龄
				</td>
				<td>
					组别
				</td>
			</tr>
			<c:choose>
				<c:when test="${empty listUser}">
					<tr>
						<td colspan="3">
							没有数据
						</td>
					</tr>
				</c:when>
				<c:otherwise>
					<c:forEach items="${listUser}" var="user">
						<tr>
							<td>
								${user.name}
							</td>
							<td>
								${user.age }
							</td>
							<td>
								${user.group.groupName}
							</td>
						</tr>
					</c:forEach>
				</c:otherwise>
			</c:choose>
		</table>
		<br />
		<li>
			测试c:forEach varStatus
		</li>
		<table>
			<tr>
				<td>
					姓名
				</td>
				<td>
					年龄
				</td>
				<td>
					组别
				</td>
			</tr>
			<c:choose>
				<c:when test="${empty listUser}">
					<tr>
						<td colspan="3">
							没有数据
						</td>
					</tr>
				</c:when>
				<c:otherwise>
					<c:forEach items="${listUser}" var="user" varStatus="vs">

						<c:choose>
							<c:when test="${vs.count % 2==0}">
								<tr bgcolor="green">
									<td>
										${user.name}
									</td>
									<td>
										${user.age }
									</td>
									<td>
										${user.group.groupName}
									</td>
								</tr>
							</c:when>
							<c:otherwise>
								<tr>
									<td>
										${user.name}
									</td>
									<td>
										${user.age }
									</td>
									<td>
										${user.group.groupName}
									</td>
								</tr>
							</c:otherwise>
						</c:choose>

					</c:forEach>
				</c:otherwise>
			</c:choose>
		</table>
		<br />
		<li>
			测试forEach begin end
		</li>

		<table>
			<tr>
				<td>
					姓名
				</td>
				<td>
					年龄
				</td>
				<td>
					组别
				</td>
			</tr>
			<c:choose>
				<c:when test="${empty listUser}">
					<tr>
						<td colspan="3">
							没有数据
						</td>
					</tr>
				</c:when>
				<c:otherwise>
					<c:forEach items="${listUser}" var="user" begin="2" end="7"
						step="1">
						<tr>
							<td>
								${user.name}
							</td>
							<td>
								${user.age }
							</td>
							<td>
								${user.group.groupName}
							</td>
						</tr>
					</c:forEach>
				</c:otherwise>
			</c:choose>
		</table>
		<li>
			测试forEach 取出map中的值
		</li>
		<c:forEach items="${map}" var="entry">
			${entry.key},${entry.value}<br />
		</c:forEach>
		<br />
		<li>
			测试forTokens
		</li>
		<c:forTokens items="${strTokens}" delims="@" var="t">
			${t}<br />
		</c:forTokens>
		<li>
			测试c:catch
		</li>
		<c:catch var="msg">
			<%
				Integer.parseInt("rewrw");
			%>
		</c:catch>
		${msg}
		<br />
		<li>
			测试 c:import
		</li>
		<c:import url="http://www.baidu.com"></c:import>
		<li>
			测试 c:url param
		</li>
		<c:url value="http://www.baidu.com" var="uri">
			<c:param name="id1" value="321">
			</c:param>
			<c:param name="id2" value="876">
			</c:param>
		</c:url>
		<br />
		${uri}
		<br />
		<li>
			测试 fn
		</li>
		<br />
		str.length(函数必须放在EL表达式中,用法:前缀+冒号+函数名称):${fn:length(str)}
		<br />
		<c:forEach items="${fn:split(strs,\"#\")}" var="v1">
			${v1 }<br />
		</c:forEach>
		<br />
		${my:Hello("张三")}

		<li>
			测试 fmt
		</li>
		<br />
		today(default)
		<fmt:formatDate value="${today}" />
		<br />
		today(type="date")
		<fmt:formatDate value="${today}" type="date" />
		<br />
		today(type="time")
		<fmt:formatDate value="${today}" type="time" />
		<br />
		today(type="both")
		<fmt:formatDate value="${today}" type="both" />
		<br />
		today(dateStyle="short")
		<fmt:formatDate value="${today}" dateStyle="short" />
		<br />
		today(dateStyle="medium")
		<fmt:formatDate value="${today}" dateStyle="medium" />
		<br />
		today(dateStyle="long")
		<fmt:formatDate value="${today}" dateStyle="long" />
		<br />
		today(dateStyle="full")
		<fmt:formatDate value="${today}" dateStyle="full" />
		<br />
		today(pattern="yyyy/MM/dd hh:mm:ss")
		<fmt:formatDate value="${today}" pattern="yyyy/MM/dd HH:mm:ss" />
		<br />
		<fmt:formatDate value="${today}" pattern="yyyy/MM/dd HH:mm:ss"
			var="nowDate" />
		<br />
		${nowDate }
		<br />

		<li>
			测试格式化数字
		</li>
		<br />
		number(default)
		<fmt:formatNumber value="${num}" />
		<br />
		number(pattern="###,###,###.####")
		<fmt:formatNumber value="${num}" pattern="###,###,###.####" />
		<br />
		number(pattern="###,###,###.000")
		<fmt:formatNumber value="${num}" pattern="###,###,###.000" />
		<br />
		number(groupingUsed="false")
		<fmt:formatNumber value="${num}" groupingUsed="false" />
		<br />
		number(minIntegerDigits="10" maxIntegerDigits="10")
		<fmt:formatNumber value="${num}" minIntegerDigits="10"
			maxIntegerDigits="10" />
		<br />
		number(minFractionDigits="4" maxFractionDigits="5")
		<fmt:formatNumber value="${num}" minFractionDigits="4"
			maxFractionDigits="5" />
		<br />
		number(type="currency")
		<fmt:formatNumber value="${num}" type="currency" />
		<br />
		number(type="currency" currencySymbol="$")
		<fmt:formatNumber value="${num}" type="currency" currencySymbol="$" />
		<br />
		number(type="percent" maxFractionDigits="5" minFractionDigits="3")
		<fmt:formatNumber value="${pnum}" type="percent" maxFractionDigits="5"
			minFractionDigits="3" />
		<br />
		<br />

	</body>
</html>



结果:

测试 JSTL

测试c:out标签 hello(使用标签): 123

hello(使用标签): hello world

hello(使用标签): hello

hello(使用EL表达式):hello world

hello(default):

hello(使用缺省值): hi

hello(使用标签): hi

hello world(使用EL表达式):hello world

hello world(使用escapeXML): <font color="red">hello world</font> hi

hello world(使用escapeXML): hello world hi

测试c:set 标签

hi:hello world!

hi:

测试 c:if 标签

“v1 < v2”

测试 c:choose c:when c:otherwise

"v1 < v2"

无数据

测试 c:forEach
姓名年龄组别
战三010战三group0
战三110战三group1
战三210战三group2
战三310战三group3
战三410战三group4
战三510战三group5
战三610战三group6
战三710战三group7
战三810战三group8
战三910战三group9
战三1010战三group10
测试c:forEach varStatus
姓名年龄组别
战三010战三group0
战三110战三group1
战三210战三group2
战三310战三group3
战三410战三group4
战三510战三group5
战三610战三group6
战三710战三group7
战三810战三group8
战三910战三group9
战三1010战三group10
测试forEach begin end
姓名年龄组别
战三210战三group2
战三310战三group3
战三410战三group4
战三510战三group5
战三610战三group6
战三710战三group7
测试forEach 取出map中的值 k3,k3value

k4,k4value

k5,k5value

k6,k6value

k1,k1value

k2,k2value

测试forTokens 1

2

3

4

5

6

7

测试c:catch java.lang.NumberFormatException: For input string: "rewrw"

测试 c:url param
http://www.baidu.com?id1=321&id2=876

测试 fn

str.length(函数必须放在EL表达式中,用法:前缀+冒号+函数名称):11

fd

fs

dfsd

432

Hello! 张三
测试 fmt

today(default) 2013-3-11

today(type="date") 2013-3-11

today(type="time") 15:46:20

today(type="both") 2013-3-11 15:46:20

today(dateStyle="short") 13-3-11

today(dateStyle="medium") 2013-3-11

today(dateStyle="long") 2013年3月11日

today(dateStyle="full") 2013年3月11日 星期一

today(pattern="yyyy/MM/dd hh:mm:ss") 2013/03/11 15:46:20

2013/03/11 15:46:20

测试格式化数字

number(default) 1,234,567.123

number(pattern="###,###,###.####") 1,234,567.1235

number(pattern="###,###,###.000") 1,234,567.123

number(groupingUsed="false") 1234567.123

number(minIntegerDigits="10" maxIntegerDigits="10") 0,001,234,567.123

number(minFractionDigits="4" maxFractionDigits="5") 1,234,567.12346

number(type="currency") ¥1,234,567.12

number(type="currency" currencySymbol="$") $1,234,567.12

number(type="percent" maxFractionDigits="5" minFractionDigits="3") 12.33456%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: