1
+ <%@ page language =" java" contentType =" text/html; charset=UTF-8"
2
+ pageEncoding =" UTF-8" %>
3
+ <%@ taglib prefix =" c" uri =" http://java.sun.com/jsp/jstl/core" %>
4
+ <%@ taglib prefix =" fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>
5
+ <%@ taglib prefix =" fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
6
+ <%@ taglib prefix =" sql" uri =" http://java.sun.com/jsp/jstl/sql" %>
7
+ <%@ taglib prefix =" x" uri =" http://java.sun.com/jsp/jstl/xml" %>
8
+
9
+ <!DOCTYPE>
10
+ <html >
11
+ <head >
12
+ <meta http-equiv =" Content-Type" content =" text/html; charset=ISO-8859-1" >
13
+ <title >JSTL Demo</title >
14
+ </head >
15
+ <body >
16
+
17
+ <p >========== Set and If Tags Demo ==========</p >
18
+ <%-- scopes: page, request, session, application --%>
19
+ <c:set var =" testVar" value =" 100" scope =" request" />
20
+
21
+ <c:if test =" ${ testVar > 5 } " >
22
+ <p >Test Var exist on the page and it is more than 5</p >
23
+ </c:if >
24
+
25
+
26
+ <p >========== For each loop Demo ==========</p >
27
+ <c:if test =" ${ users != null } " >
28
+ <table border =" 1" >
29
+ <c:forEach items =" ${ users } " var =" user" >
30
+ <tr >
31
+ <td >
32
+ ${ user. id }
33
+ </td >
34
+ <td >
35
+ ${ user. firstName }
36
+ </td >
37
+ <td >
38
+ ${ user. lastName }
39
+ </td >
40
+ <td >
41
+ ${ user. email }
42
+ </td >
43
+ </tr >
44
+ </c:forEach >
45
+ </table >
46
+ </c:if >
47
+
48
+
49
+ <p >========== Remove Tag Demo ==========</p >
50
+ <c:remove var =" testVar" />
51
+ <p >After Remove Value: <c:out value =" ${ testVar } " /></p >
52
+
53
+
54
+ <p >========== Out Tag Demo ==========</p >
55
+ <p >
56
+ Let's print "<html > text" with "escapeXml" set to "false":
57
+ <c:out value =" <html> text" escapeXml =" false" />
58
+ </p >
59
+ <p >
60
+ Let's print "<html > text" with "escapeXml" set to "true":
61
+ <c:out value =" <html> text" escapeXml =" true" />
62
+ </p >
63
+ <p >
64
+ Let's print null value with "deafult" set to "default":
65
+ <c:out value =" ${ null } " default =" default" ></c:out >
66
+ </p >
67
+
68
+
69
+
70
+ <p >========== Exception Handling Demo ==========</p >
71
+ <%-- CATCH DEMO --%>
72
+ <c:catch var =" catchException" >
73
+ <%
74
+ int x = 5 / 0 ;
75
+ % >
76
+ </c:catch >
77
+
78
+ <c:if test =" ${ not empty catchException } " >
79
+ <p >
80
+ The exception is : ${ catchException } <br /> There is an exception:
81
+ ${ catchException. message }
82
+ </p >
83
+ </c:if >
84
+
85
+
86
+ <p >========== Choose Tag Demo ==========</p >
87
+ <c:set var =" salary" scope =" session" value =" 10000" />
88
+ <p >
89
+ Your salary is :
90
+ <c:out value =" ${ salary } " />
91
+ </p >
92
+ <c:choose >
93
+ <c:when test =" ${ salary le 1000 } " >
94
+ You have a good salary.
95
+ </c:when >
96
+
97
+ <c:when test =" ${ (salary gt 1000 ) and (salary lt 5000 ) } " >
98
+ Salary is very good.
99
+ </c:when >
100
+
101
+ <c:otherwise >
102
+ I'm proud of you, sir :)
103
+ </c:otherwise >
104
+ </c:choose >
105
+
106
+ <p >========== URL and Import Tags Demo ==========</p >
107
+ <c:url value =" jsp-include-demo.jsp" var =" url" scope =" session" >
108
+ <c:param name =" partnerCode" value =" 123456" />
109
+ <c:param name =" couponCode" value =" ASDFG" />
110
+ </c:url >
111
+ <p >URL is = ${ url } </p >
112
+ <c:import url =" ${ url } " />
113
+
114
+
115
+ <p >========== Formatting Tags Demo ==========</p >
116
+ <h3 >Number Format:</h3 >
117
+ <c:set var = " balance" value = " 120000.2309" />
118
+
119
+ <p >Formatted Number (1): <fmt:formatNumber value = " ${ balance } "
120
+ type = " currency" /></p >
121
+
122
+ <p >Formatted Number (2): <fmt:formatNumber type = " number"
123
+ maxIntegerDigits = " 3" value = " ${ balance } " /></p >
124
+
125
+ <p >Formatted Number (3): <fmt:formatNumber type = " number"
126
+ maxFractionDigits = " 3" value = " ${ balance } " /></p >
127
+
128
+ <p >Formatted Number (4): <fmt:formatNumber type = " number"
129
+ groupingUsed = " false" value = " ${ balance } " /></p >
130
+
131
+ <p >Formatted Number (5): <fmt:formatNumber type = " percent"
132
+ maxIntegerDigits =" 3" value = " ${ balance } " /></p >
133
+
134
+ <p >Formatted Number (6): <fmt:formatNumber type = " percent"
135
+ minFractionDigits = " 10" value = " ${ balance } " /></p >
136
+
137
+ <p >Formatted Number (7): <fmt:formatNumber type = " percent"
138
+ maxIntegerDigits = " 3" value = " ${ balance } " /></p >
139
+
140
+ <p >Formatted Number (8): <fmt:formatNumber type = " number"
141
+ pattern = " ###.###E0" value = " ${ balance } " /></p >
142
+
143
+ <p >Currency in USA :
144
+ <fmt:setLocale value = " en_US" />
145
+ <fmt:formatNumber value = " ${ balance } " type = " currency" />
146
+ </p >
147
+
148
+ <%-- FORMAT DATE DEMO --%>
149
+ <h3 >Date Format:</h3 >
150
+ <c:set var = " now" value = " <%= new java.util. Date () % >" />
151
+
152
+ <p >Formatted Date (1): <fmt:formatDate type = " time"
153
+ value = " ${ now } " /></p >
154
+
155
+ <p >Formatted Date (2): <fmt:formatDate type = " date"
156
+ value = " ${ now } " /></p >
157
+
158
+ <p >Formatted Date (3): <fmt:formatDate type = " both"
159
+ value = " ${ now } " /></p >
160
+
161
+ <p >Formatted Date (4): <fmt:formatDate type = " both"
162
+ dateStyle = " short" timeStyle = " short" value = " ${ now } " /></p >
163
+
164
+ <p >Formatted Date (5): <fmt:formatDate type = " both"
165
+ dateStyle = " medium" timeStyle = " medium" value = " ${ now } " /></p >
166
+
167
+ <p >Formatted Date (6): <fmt:formatDate type = " both"
168
+ dateStyle = " long" timeStyle = " long" value = " ${ now } " /></p >
169
+
170
+ <p >Formatted Date (7): <fmt:formatDate pattern = " yyyy-MM-dd"
171
+ value = " ${ now } " /></p >
172
+
173
+
174
+
175
+ <p >========== Function Tags Demo ==========</p >
176
+ <%-- FN DEMO contains --%>
177
+ <c:set var = " theString" value = " I am a test String" />
178
+
179
+ <c:if test = " ${ fn: contains(theString, ' test' ) } " >
180
+ <p >Found test string<p >
181
+ </c:if >
182
+
183
+ <c:if test = " ${ fn: contains(theString, ' TEST' ) } " >
184
+ <p >Found TEST string<p >
185
+ </c:if >
186
+
187
+ <c:if test = " ${ fn: containsIgnoreCase(theString, ' test' ) } " >
188
+ <p >Found test string<p >
189
+ </c:if >
190
+
191
+ <c:if test = " ${ fn: containsIgnoreCase(theString, ' TEST' ) } " >
192
+ <p >Found TEST string<p >
193
+ </c:if >
194
+
195
+ <%-- FN ends with --%>
196
+ <c:set var = " theString" value = " I am a test String 123" />
197
+
198
+ <c:if test = " ${ fn: endsWith(theString, ' 123' ) } " >
199
+ <p >String ends with 123<p >
200
+ </c:if >
201
+
202
+ <c:if test = " ${ fn: endsWith(theString, ' TEST' ) } " >
203
+ <p >String ends with TEST<p >
204
+ </c:if >
205
+
206
+ <%-- DEMO index of --%>
207
+ <c:set var = " string1" value = " This is first String." />
208
+ <c:set var = " string2" value = " This <abc>is second String.</abc>" />
209
+ <p >indexOf tag Demo in String 1: ${ fn: indexOf(string1, " first" ) } </p >
210
+ <p >indexOf tag Demo in String 2: ${ fn: indexOf(string2, " second" ) } </p >
211
+
212
+ <%-- SPLIT and JOIN FN --%>
213
+ <c:set var = " string1" value = " This is first String." />
214
+ <c:set var = " string2" value = " ${ fn: split(string1, ' ' ) } " />
215
+ <c:set var = " string3" value = " ${ fn: join(string2, ' -' ) } " />
216
+ <p >Split and Join tags Demo: ${ string3 } </p >
217
+
218
+ <%-- FN LENGTH --%>
219
+
220
+ <c:set var = " string1" value = " This is first String." />
221
+ <c:set var = " string2" value = " This is second String." />
222
+ <p >Length of String (1) : ${ fn: length(string1) } </p >
223
+ <p >Length of String (2) : ${ fn: length(string2) } </p >
224
+
225
+
226
+ <%-- FN replace --%>
227
+ <c:set var = " string1" value = " This is first String." />
228
+ <c:set var = " string2" value = " ${ fn: replace(string1, ' first' , ' second' ) } " />
229
+ <p >Replace tag demo: ${ string2 } </p >
230
+
231
+ <%-- FN starts with --%>
232
+ <c:set var = " string" value = " Second: This is first String." />
233
+
234
+ <c:if test = " ${ fn: startsWith(string, ' First' ) } " >
235
+ <p >String starts with First</p >
236
+ </c:if >
237
+
238
+ <c:if test = " ${ fn: startsWith(string, ' Second' ) } " >
239
+ <p >String starts with Second</p >
240
+ </c:if >
241
+
242
+
243
+ <p >========== SQL Tags Demo ==========</p >
244
+ <sql:setDataSource var =" dataSource" driver =" com.mysql.cj.jdbc.Driver"
245
+ url =" jdbc:mysql://localhost:3306/learn_it_db" user =" root" password =" root" />
246
+
247
+ <sql:query dataSource =" ${ dataSource } " var =" rs" >
248
+ SELECT * FROM user;
249
+ </sql:query >
250
+
251
+ <table border =" 1" >
252
+ <tr >
253
+ <th >ID</th >
254
+ <th >First Name</th >
255
+ <th >Last Name</th >
256
+ <th >Email</th >
257
+ </tr >
258
+ <c:forEach var =" row" items =" ${ rs. rows } " >
259
+ <tr >
260
+ <td ><c:out value =" ${ row. id } " /></td >
261
+ <td ><c:out value =" ${ row. first_name } " /></td >
262
+ <td ><c:out value =" ${ row. last_name } " /></td >
263
+ <td ><c:out value =" ${ row. email } " /></td >
264
+ </tr >
265
+ </c:forEach >
266
+ </table >
267
+
268
+
269
+
270
+ <p >========== XML Tags Demo ==========</p >
271
+ <c:set var =" employees" >
272
+ <employees >
273
+ <employee >
274
+ <firstname >John</firstname >
275
+ <lastname >Smith</lastname >
276
+ <role >Employee</role >
277
+ <salary >110000</salary >
278
+ </employee >
279
+ <employee >
280
+ <firstname >Jack</firstname >
281
+ <lastname >Jackson</lastname >
282
+ <role >Manager</role >
283
+ <salary >170000</salary >
284
+ </employee >
285
+ </employees >
286
+ </c:set >
287
+ <x:parse xml =" ${ employees } " var =" xml" />
288
+ <p >The first name of the first employee from the XML:
289
+ <x:out select =" $xml/employees/employee[1]/firstname/text()" />
290
+ </p >
291
+ <p >The last name of the first employee from the XML:
292
+ <x:out select =" $xml/employees/employee[1]/lastname/text()" />
293
+ </p >
294
+
295
+
296
+
297
+
298
+ </body >
299
+ </html >
0 commit comments