一.
jstl标签库的配置
* 将jstl.jar和standard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar)
注意:jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能运行,这个环境
是目前较为常用的环境
标签库的使用
* 采用taglib指令引入
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
测试jstl核心库
1<h1>测试jstl核心库</h1>
2 <hr>
3 <li>测试c:out</li><br>
4 hello(default):<c:out value="${hello}"/><br>
5 hello(el表达式):${hello }<br>
6 hello(default="123"):<c:out value="${abc}" default="123"/><br>
7 hello(default="123"):<c:out value="${abc}">123</c:out><br>
8 bj(defalut):<c:out value="${bj}"/><br>
9 bj(escapeXml="true"):<c:out value="${bj}" escapeXml="true"/><br>
10 bj(escapeXml="false"):<c:out value="${bj}" escapeXml="false"/><br>
11 bj(el表达式):${bj }<br>
12 <p>
13 <li>测试c:set和c:remove</li><br>
14 <c:set value="123" var="temp"/>
15 temp:${temp }<br>
16 <c:remove var="temp"/>
17 temp:${temp }<br>
18 <p>
19 <li>测试条件控制标签c:if</li><br>
20 <c:if test="${v1 lt v2}" var="v">
21 v1小于v2<br>v=${v }<br>
22 </c:if>
23 <c:if test="${empty v3}">
24 v3为空<br>
25 </c:if>
26 <c:if test="${empty v4}">
27 v4为空<br>
28 </c:if>
29 <p>
30 <li>测试条件控制标签c:choose,c:when,c:otherwise</li><br>
31 <c:choose>
32 <c:when test="${v1 lt v2}">
33 v1小于v2<br>
34 </c:when>
35 <c:otherwise>
36 v1大于v2<br>
37 </c:otherwise>
38 </c:choose>
39 <c:choose>
40 <c:when test="${empty v4}">
41 v4为空<br>
42 </c:when>
43 <c:otherwise>
44 v4不为空<br>
45 </c:otherwise>
46 </c:choose>
47 <p>
48 <li>测试循环控制标签c:forEach</li><br>
49 <table border="1">
50 <tr>
51 <td>姓名</td>
52 <td>年龄</td>
53 <td>所属组</td>
54 </tr>
55 <c:choose>
56 <c:when test="${empty userlist}">
57 <tr>
58 <td colspan="3">没有符合条件的数据!</td>
59 </tr>
60 </c:when>
61 <c:otherwise>
62 <c:forEach items="${userlist}" var="u">
63 <tr>
64 <td>${u.username }</td>
65 <td>${u.age }</td>
66 <td>${u.group.name }</td>
67 </tr>
68 </c:forEach>
69 </c:otherwise>
70 </c:choose>
71 </table>
72 <p>
73 <li>测试循环控制标签c:forEach,varstatus</li><br>
74 <table border="1">
75 <tr>
76 <td>姓名</td>
77 <td>年龄</td>
78 <td>所属组</td>
79 </tr>
80 <c:choose>
81 <c:when test="${empty userlist}">
82 <tr>
83 <td colspan="3">没有符合条件的数据!</td>
84 </tr>
85 </c:when>
86 <c:otherwise>
87 <c:forEach items="${userlist}" var="user" varStatus="vs">
88 <c:choose>
89 <c:when test="${vs.count % 2 == 0}">
90 <tr bgcolor="red">
91 </c:when>
92 <c:otherwise>
93 <tr>
94 </c:otherwise>
95 </c:choose>
96 <td>
97 <c:out value="${user.username}"/>
98 </td>
99 <td>
100 <c:out value="${user.age}"/>
101 </td>
102 <td>
103 <c:out value="${user.group.name}"/>
104 </td>
105 </tr>
106 </c:forEach>
107 </c:otherwise>
108 </c:choose>
109 </table>
110 <p>
111 <li>测试循环控制标签c:forEach,begin,end,step</li><br>
112 <table border="1">
113 <tr>
114 <td>姓名</td>
115 <td>年龄</td>
116 <td>所属组</td>
117 </tr>
118 <c:choose>
119 <c:when test="${empty userlist}">
120 <tr>
121 <td colspan="3">没有符合条件的数据!</td>
122 </tr>
123 </c:when>
124 <c:otherwise>
125 <c:forEach items="${userlist}" var="user" begin="2" end="8" step="2">
126 <tr>
127 <td>${user.username}</td>
128 <td>${user.age}</td>
129 <td>${user.group.name }</td>
130 </tr>
131 </c:forEach>
132 </c:otherwise>
133 </c:choose>
134 </table>
135 <p>
136 <li>测试循环控制标签c:forEach,普通循环</li><br>
137 <c:forEach begin="1" end="10">
138 a<br>
139 </c:forEach>
140 <p>
141 <li>测试循环控制标签c:forEach,输出map</li><br>
142 <c:forEach items="${mapvalue}" var="v">
143 ${v.key }=${v.value }<br>
144 </c:forEach>
145 <p>
146 <li>测试循环控制标签c:forTokens</li><br>
147 <c:forTokens items="${strTokens}" delims="," var="v">
148 ${v }<br>
149 </c:forTokens>
150 <p>
151 <li>测试c:catch</li><br>
152 <%
153 try {
154 Integer.parseInt("asdfsdf");
155 }catch(Exception e) {
156 out.println(e.getMessage());
157 }
158 %>
159 <p>
160 <c:catch var="exinfo">
161 <%
162 Integer.parseInt("asdfsdf");
163 %>
164 </c:catch>
165 ${exinfo }<br>
166 <p>
167 <li>测试c:import</li><br>
168 <c:import url="http://localhost:8080/struts_login"/>
169 <p>
170 <li>测试c:url和c:param</li><br>
171 <c:url value="http://localhost:8080/drp/sysmgr/user_add.jsp" var="v">
172 <c:param name="username" value="Jack"/>
173 <c:param name="age" value="20"/>
174 </c:url>
175 ${v }<br>
176 <li>测试:redirect</li><br>
177 <c:redirect context="/struts_login" url="/index.jsp"/>
1<h1>测试jstl核心库</h1>
2 <hr>
3 <li>测试c:out</li><br>
4 hello(default):<c:out value="${hello}"/><br>
5 hello(el表达式):${hello }<br>
6 hello(default="123"):<c:out value="${abc}" default="123"/><br>
7 hello(default="123"):<c:out value="${abc}">123</c:out><br>
8 bj(defalut):<c:out value="${bj}"/><br>
9 bj(escapeXml="true"):<c:out value="${bj}" escapeXml="true"/><br>
10 bj(escapeXml="false"):<c:out value="${bj}" escapeXml="false"/><br>
11 bj(el表达式):${bj }<br>
12 <p>
13 <li>测试c:set和c:remove</li><br>
14 <c:set value="123" var="temp"/>
15 temp:${temp }<br>
16 <c:remove var="temp"/>
17 temp:${temp }<br>
18 <p>
19 <li>测试条件控制标签c:if</li><br>
20 <c:if test="${v1 lt v2}" var="v">
21 v1小于v2<br>v=${v }<br>
22 </c:if>
23 <c:if test="${empty v3}">
24 v3为空<br>
25 </c:if>
26 <c:if test="${empty v4}">
27 v4为空<br>
28 </c:if>
29 <p>
30 <li>测试条件控制标签c:choose,c:when,c:otherwise</li><br>
31 <c:choose>
32 <c:when test="${v1 lt v2}">
33 v1小于v2<br>
34 </c:when>
35 <c:otherwise>
36 v1大于v2<br>
37 </c:otherwise>
38 </c:choose>
39 <c:choose>
40 <c:when test="${empty v4}">
41 v4为空<br>
42 </c:when>
43 <c:otherwise>
44 v4不为空<br>
45 </c:otherwise>
46 </c:choose>
47 <p>
48 <li>测试循环控制标签c:forEach</li><br>
49 <table border="1">
50 <tr>
51 <td>姓名</td>
52 <td>年龄</td>
53 <td>所属组</td>
54 </tr>
55 <c:choose>
56 <c:when test="${empty userlist}">
57 <tr>
58 <td colspan="3">没有符合条件的数据!</td>
59 </tr>
60 </c:when>
61 <c:otherwise>
62 <c:forEach items="${userlist}" var="u">
63 <tr>
64 <td>${u.username }</td>
65 <td>${u.age }</td>
66 <td>${u.group.name }</td>
67 </tr>
68 </c:forEach>
69 </c:otherwise>
70 </c:choose>
71 </table>
72 <p>
73 <li>测试循环控制标签c:forEach,varstatus</li><br>
74 <table border="1">
75 <tr>
76 <td>姓名</td>
77 <td>年龄</td>
78 <td>所属组</td>
79 </tr>
80 <c:choose>
81 <c:when test="${empty userlist}">
82 <tr>
83 <td colspan="3">没有符合条件的数据!</td>
84 </tr>
85 </c:when>
86 <c:otherwise>
87 <c:forEach items="${userlist}" var="user" varStatus="vs">
88 <c:choose>
89 <c:when test="${vs.count % 2 == 0}">
90 <tr bgcolor="red">
91 </c:when>
92 <c:otherwise>
93 <tr>
94 </c:otherwise>
95 </c:choose>
96 <td>
97 <c:out value="${user.username}"/>
98 </td>
99 <td>
100 <c:out value="${user.age}"/>
101 </td>
102 <td>
103 <c:out value="${user.group.name}"/>
104 </td>
105 </tr>
106 </c:forEach>
107 </c:otherwise>
108 </c:choose>
109 </table>
110 <p>
111 <li>测试循环控制标签c:forEach,begin,end,step</li><br>
112 <table border="1">
113 <tr>
114 <td>姓名</td>
115 <td>年龄</td>
116 <td>所属组</td>
117 </tr>
118 <c:choose>
119 <c:when test="${empty userlist}">
120 <tr>
121 <td colspan="3">没有符合条件的数据!</td>
122 </tr>
123 </c:when>
124 <c:otherwise>
125 <c:forEach items="${userlist}" var="user" begin="2" end="8" step="2">
126 <tr>
127 <td>${user.username}</td>
128 <td>${user.age}</td>
129 <td>${user.group.name }</td>
130 </tr>
131 </c:forEach>
132 </c:otherwise>
133 </c:choose>
134 </table>
135 <p>
136 <li>测试循环控制标签c:forEach,普通循环</li><br>
137 <c:forEach begin="1" end="10">
138 a<br>
139 </c:forEach>
140 <p>
141 <li>测试循环控制标签c:forEach,输出map</li><br>
142 <c:forEach items="${mapvalue}" var="v">
143 ${v.key }=${v.value }<br>
144 </c:forEach>
145 <p>
146 <li>测试循环控制标签c:forTokens</li><br>
147 <c:forTokens items="${strTokens}" delims="," var="v">
148 ${v }<br>
149 </c:forTokens>
150 <p>
151 <li>测试c:catch</li><br>
152 <%
153 try {
154 Integer.parseInt("asdfsdf");
155 }catch(Exception e) {
156 out.println(e.getMessage());
157 }
158 %>
159 <p>
160 <c:catch var="exinfo">
161 <%
162 Integer.parseInt("asdfsdf");
163 %>
164 </c:catch>
165 ${exinfo }<br>
166 <p>
167 <li>测试c:import</li><br>
168 <c:import url="http://localhost:8080/struts_login"/>
169 <p>
170 <li>测试c:url和c:param</li><br>
171 <c:url value="http://localhost:8080/drp/sysmgr/user_add.jsp" var="v">
172 <c:param name="username" value="Jack"/>
173 <c:param name="age" value="20"/>
174 </c:url>
175 ${v }<br>
176 <li>测试:redirect</li><br>
177 <c:redirect context="/struts_login" url="/index.jsp"/>