Jstl简介
鉴于目前强大的struts标签,貌似其已经成为
主流````而以前在页上常用的Jstl标记性语言用得越来越少,但是作为一个新手,面对前人写的程序,没有对JSTL作一个基本的了解是不行的,因为,我决定对JSTL作一个简单的了解,至少能认识是什么东西吧,不要求完全掌握。
一、我的第一个jstl程序
运行ide:myeclipse
首先建立一个web项目,再在项目中添加jstl,即myeclise的add jstl```````````````.
或者在你的web中加入jstl.jar standard.jar
Test.java
1 <%@ page language="java" pageEncoding="GBK"%>
2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <html>
5 <head>
6 <title>My JSP 'test.jsp' starting page</title>
7 </head>
8 <body>
9 <c:out value="欢迎使用你的第一个测试页面"/>
10 <br>
11 <c:out value="``````````````````````````"/>
12 <br>
13 <c:out value="你的名字"/>
14 </body>
15 </html>
16
二、关于jstl
JSTL所提供的函数标签库主要分为以下5类。
类别
|
内容
|
核心标签库
|
提供定制操作、以及执行页面内容的迭代和条件操作,还提供了用来生成和操作URL的标签。
|
XML标签库
|
提供了用来 操作以XML表示的数据的标签。
|
格式化/国际化(i18n)标签库
|
定义了用来格式化数据(尤其是数字和日期)的操作的标签,这些标签还支持使用本地化资源进行JSP页面的国际化。
|
数据库标签库
|
定义了用来查询关系数据库操作的标签。
|
函数标签库
|
利用EL的Function所实现出来的,主要用于处理字符串。
|
表 7-1
JSTL 前置名称 URI 范 例
核心标签库 c http://java.sun.com/jsp/jstl/core <c:out>
I18N 格式标签库 fmt http://java.sun.com/jsp/jstl/xml <fmt:formatDate>
SQL标签库 sql http://java.sun.com/jsp/jstl/sql <sql:query>
XML标签库 xml http://java.sun.com/jsp/jstl/fmt <x:forBach>
函数标签库 fn http://java.sun.com/jsp/jstl/functions <fn:split>
三.关于每个库的实例
对于每一个标签的用法和标签中的属性我们在这不作说明,有兴趣的可以参越相关的文档。
(1)核心标签库
核心标签库分类
分类
|
功能
|
标签
|
Core
|
表达式相关
|
out set remove catch
|
流程控制
|
if choose when otherwise
|
迭代
|
forEach forTokens
|
URL
|
import param url param rediect param
|
表达式相关实例:
1 <%@ page contentType="text/html;charset=GB2312" %>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
4 <html>
5 <head>
6 <title>表达式相关的标签</title>
7 </head>
8 <body>
9
10 <h2>使用<c:out value="<c:out> <c:set> <c:remove>" />的例子</h2>
11 <hr>
12 <c:set scope="page" var="number">
13 <c:out value="${5}"/>
14 </c:set>
15 <br>
16 <c:set scope="request" var="number">
17 <c:out value="${5}"/>
18 </c:set>
19 <br>
20 <c:set scope="session" var="number">
21 <c:out value="${5}"/>
22 </c:set>
23
24 各范围number变量的初始值</p>
25
26 pageScope.number =<c:out value="${pageScope.number}" default="No Data" />
27 <br>
28 requestScope.number =<c:out value="${requestScope.number}" default="No Data" />
29 <br>
30 sessionScope.number =<c:out value="${sessionScope.number}" default="No Data" />
31 <br>
32
33 <p><c:out value='执行<c:remove var="number" />之后'/></p>
34
35 <c:remove var="number" />
36
37 pageScope.number =<c:out value="${pageScope.number}" default="No Data" />
38 <br>
39 requestScope.number =<c:out value="${requestScope.number}" default="No Data" />
40 <br>
41 sessionScope.number =<c:out value="${sessionScope.number}" default="No Data" />
42 <br>
43 </body>
44 </html>
45
流程控制实例:
1 <%@ page contentType="text/html;charset=GB2312" %>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
4 <html>
5 <head>
6 <title>JSTL中用于流程控制的标签</title>
7 </head>
8 <body>
9
10 <h2>标签c:if的使用</h2>
11 <c:if test="${param.username == 'Tom'}" var="condition" scope="session">
12 您好,Tom
13 </c:if>
14 <c:if test="${param.username == 'Jerry'}" var="condition" scope="session">
15 您好,Jerry
16 </c:if>
17 <c:if test="${param.username == 'Mike'}" var="condition" scope="session">
18 您好,Mike
19 </c:if>
20 <c:if test="${param.username == 'Ben'}" var="condition" scope="session">
21 您好,Ben
22 </c:if>
23
24 <h2>标签c:choose c:when c:otherwise使用</h2>
25 <c:choose>
26 <c:when test="${param.username == 'Tom'}">
27 您好,Tom
28 </c:when>
29 <c:when test="${param.username == 'Jerry'}">
30 您好,Jerry
31 </c:when>
32 <c:when test="${param.username == 'Mike'}">
33 您好,Mike
34 </c:when>
35 <c:otherwise>
36 您好,Ben
37 </c:otherwise>
38 </c:choose>
39 </body>
40 </html>
41
迭代实例:
1 <%@ page contentType="text/html;charset=GB2312" %>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
4 <html>
5 <head>
6 <title>使用c:forEach和c:forTokens标签</title>
7 </head>
8 <body>
9
10 <h2><c:out value="<c:forEach> 的用法" /></h2>
11
12 <%
13 String atts[] = new String [4];
14 atts[0]="您好!";
15 atts[1]="欢迎您!";
16 atts[2]="您已经成功使用c:forEach标签.";
17 atts[3]="____________________________柳宗元";
18 request.setAttribute("atts", atts);
19 %>
20
21 <c:forEach items="${atts}" var="item" >
22 ${item}</br>
23 </c:forEach>
24
25 <h2><c:out value="<c:forTokens> 的用法" /></h2>
26
27 <%
28 String postcode = "34:5873:9898:001";
29 request.setAttribute("mypostcode", postcode);
30 %>
31
32 <c:forTokens items = "${mypostcode}" delims = ":" var = "item">
33 ${item}
34 </c:forTokens>
35
36 </body>
37 </html>
38
结 果:
<c:forEach> 的用法
您好!
欢迎您!
您已经成功使用c:forEach标签.
____________________________柳宗元
<c:forTokens> 的用法
34 5873 9898 001
URL标签比较简单,不用再做介绍。
(2)数据库标签实例
1 <%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
2
3 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
4
5 <html>
6
7 <head>
8 <title>JSTL: SQL in action </title>
9 </head>
10 <body bgcolor="#FFFFFF">
11 <h1>SQL Update Execution</h1>
12 <sql:setDataSource
13
14 var="example"
15 driver="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookDB"
16 url="com.microsoft.jdbc.sqlserver.SQLServerDriver "
17 user="sa"
18 password=""
19 />
20 <hr>
21
22 <sql:transaction dataSource="${example}">
23
24 <sql:update var="newTable">
25 create table mytable (
26
27 nameid int primary key,
28 name varchar(80)
29 )
30 </sql:update>
31
32 <h2>在表中插入三行记录</h2>
33 <sql:update var="updateCount">
34 INSERT INTO mytable VALUES (1,'zhangshan')
35
36 </sql:update>
37 <sql:update var="updateCount">
38 INSERT INTO mytable VALUES (2,'lishi')
39 </sql:update>
40 <sql:update var="updateCount">
41 INSERT INTO mytable VALUES (3,'wangwu')
42 </sql:update>
43
44 <p>插入三行结束</p>
45 <sql:query var="deejays">
46 SELECT * FROM mytable
47 </sql:query>
48
49 </sql:transaction>
50
51 <%-- An example showing how to populate a table --%>
52 <table border="1">
53
54 <%-- Get the column names for the header of the table --%>
55 <c:forEach var="columnName" items="${deejays.columnNames}">
56 <th><c:out value="${columnName}"/></th>
57 </c:forEach>
58
59 <%-- Get the value of each column while iterating over rows --%>
60 <c:forEach var="row" items="${deejays.rows}">
61 <tr>
62 <c:forEach var="column" items="${row}">
63 <td><c:out value="${column.value}"/></td>
64 </c:forEach>
65
66 </tr>
67 </c:forEach>
68 </table>
69 <h2>更新表中的一行记录</h2>
70
71 <sql:update var="updateCount" dataSource="${example}">
72 UPDATE mytable SET name=? <sql:param value="Scott Tiger"/> WHERE nameid=1
73 </sql:update>
74 <%-- The Value for sql:param can be obtained from the JSP parameters --%>
75 <p>更新一行记录成功</p>
76
77 <sql:query var="deejays" dataSource="${example}">
78 SELECT * FROM mytable
79 </sql:query>
80 <%-- Yet another example showing how to populate a table --%>
81 <table border="1">
82 <c:forEach var="row" items="${deejays.rows}" varStatus="status">
83 <%-- Get the column names for the header of the table --%>
84 <c:choose>
85 <c:when test="${status.count == 1}">
86 <%-- Each row is a Map object key'd by the column name --%>
87 <tr>
88 <c:forEach var="metaData" items="${row}">
89 <th><c:out value="${metaData.key}"/></th>
90 </c:forEach>
91 </tr>
92 </c:when>
93 </c:choose>
94 <tr>
95 <c:forEach var="column" items="${row}">
96 <%-- Get the value of each column while iterating over rows --%>
97 <td><c:out value="${column.value}"/></td>
98 </c:forEach>
99 </tr>
100 </c:forEach>
101 </table>
102 <h2>删除表中的第二条记录</h2>
103
104 <sql:update var="updateCount" dataSource="${example}">
105 DELETE FROM mytable WHERE nameid=2
106 </sql:update>
107
108 <p>删除完成</p>
109 <sql:query var="deejays" dataSource="${example}">
110 SELECT * FROM mytable
111 </sql:query>
112 <%-- Yet another example showing how to populate a table --%>
113 <table border="1">
114 <c:forEach var="row" items="${deejays.rows}" varStatus="status">
115 <%-- Get the column names for the header of the table --%>
116 <c:choose>
117 <c:when test="${status.count == 1}">
118 <%-- Each row is a Map object key'd by the column name --%>
119 <tr>
120 <c:forEach var="metaData" items="${row}">
121 <th><c:out value="${metaData.key}"/></th>
122 </c:forEach>
123 </tr>
124 </c:when>
125 </c:choose>
126 <tr>
127 <c:forEach var="column" items="${row}">
128 <%-- Get the value of each column while iterating over rows --%>
129 <td><c:out value="${column.value}"/></td>
130 </c:forEach>
131 </tr>
132 </c:forEach>
133 </table>
134 <sql:update var="newTable" dataSource="${example}">
135 drop table mytable
136 </sql:update>
137 </body>
138 </html>
139
(3)sql和xml标签
关于这二个标签,有兴趣的可以参考ibm的学习文章
www.ibm.com/developerworks/cn/java/j-jstl0520/
看了这篇文章对jstl有一个了解了吧,其实现在不用去深入学习,纯属个人观点,呵呵!
由于现在用得不算太多,整理得不详细,望谅!如果有需要更详细的,留下你的email!
posted on 2009-04-16 10:03
重庆理工小子 阅读(2423)
评论(6) 编辑 收藏 所属分类:
Jsp基础编程