shenang博客技术文档


理论不懂就实践,实践不会就学理论!

posts - 35,comments - 55,trackbacks - 0
 

                                 Jstl简介

鉴于目前强大的struts标签,貌似其已经成为

主流````而以前在页上常用的Jstl标记性语言用得越来越少,但是作为一个新手,面对前人写的程序,没有对JSTL作一个基本的了解是不行的,因为,我决定对JSTL作一个简单的了解,至少能认识是什么东西吧,不要求完全掌握。

一、我的第一个jstl程序

运行ide:myeclipse

首先建立一个web项目,再在项目中添加jstl,即myecliseadd 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页面的国际化。

数据库标签库

定义了用来查询关系数据库操作的标签。

函数标签库

利用ELFunction所实现出来的,主要用于处理字符串。

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 

 

3sqlxml标签

 

关于这二个标签,有兴趣的可以参考ibm的学习文章

www.ibm.com/developerworks/cn/java/j-jstl0520/

看了这篇文章对jstl有一个了解了吧,其实现在不用去深入学习,纯属个人观点,呵呵!

由于现在用得不算太多,整理得不详细,望谅!如果有需要更详细的,留下你的email!

posted on 2009-04-16 10:03 重庆理工小子 阅读(2416) 评论(6)  编辑  收藏 所属分类: Jsp基础编程

FeedBack:
# re: JSTL简介
2009-04-16 10:14 | 于翔
谢谢楼主的整理  回复  更多评论
  
# re: JSTL简介
2009-04-16 10:27 | 重庆理工小子
@于翔
因为现在用得不多,整理不是很详细,望谅!  回复  更多评论
  
# re: JSTL简介
2009-04-16 11:44 | 阳衡锋
jstl+el真乃无敌,就是觉得sql这样的标签,不会这么用。  回复  更多评论
  
# re: JSTL简介
2009-04-16 12:28 | UP
@阳衡锋
确实强大,如果作JSP页面,这二种语言是少不了的````不过现在鉴于struts2的强大标签库,一般采用struts的标签了`。  回复  更多评论
  
# re: JSTL简介
2009-04-21 17:29 | 天好冷
晕,没见谁说JSTL要淘汰的……

极度反感各类框架的标签,只用JSTL  回复  更多评论
  
# re: JSTL简介
2010-01-21 15:49 | 张志超
zhangzc.009@gmail.com

可以发一份详细的jstl的文档给我吗,谢谢!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: