JSTL和EL開發(fā)JSP頁面的優(yōu)勢及實現(xiàn)
引言
WEB應(yīng)用程序設(shè)計(JSP)是計算機專業(yè)學(xué)生的專業(yè)必修課程,但是有些Java語言基礎(chǔ)薄弱的同學(xué)會感覺學(xué)習(xí)困難,很多同學(xué)在畢業(yè) 后參加信息產(chǎn)業(yè)部等部門組織的相應(yīng)專業(yè)職業(yè)技能考證考試時感到束手無策,因為JSP中大量動態(tài)內(nèi)容的邏輯需要通過Java代碼段來實現(xiàn)。JSTL(JSP Standard Tag Library,JSP標(biāo)準(zhǔn)標(biāo)記庫)規(guī)范的發(fā)布和JSP 2.0新特性EL(Expression Language,表達式語言)的引入,為不習(xí)慣Java語言或者不熟悉Java語言的WEB設(shè)計開發(fā)人員提供了一個JSP開發(fā)的新途徑,它簡化了程序, 提高了程序的可讀性和可維護性。
優(yōu)勢與實現(xiàn)
JSTL規(guī)范是由JCP(Java Community process program)開放性組織發(fā)展完善的。JSTL1.0始發(fā)布于2002年6月,目前***版本是JSTL1.2。JSTL實際上可以看作是一組基于XML 語法的自定義標(biāo)記形成的標(biāo)記庫。JSTL提供五個標(biāo)準(zhǔn)標(biāo)記庫(core核心、internationalization/format(國際標(biāo)準(zhǔn)化/格 式)、XML、SQL和function函數(shù))并支持EL。EL是2003年發(fā)布的JSP 2.0引入的最主要的新特性,它用簡單語法定義了表達式語言。在JSTL標(biāo)記中,可以靈活使用EL表達式,提供了一個用EL表示的強大的屬性集,使得 JSP動態(tài)表示層技術(shù)開發(fā)可以完全脫離Java腳本代碼。
目前Tomcat 6 Web服務(wù)器中不自動包含對JSTL的支持,所以在使用JSTL之前須在SUN的JSTL頁面(http://java.sun.com /products/jsp/jstl)下載JSTL規(guī)范(一些.JAR文件)。JSTL有以下三個安裝配置步驟:
①將JSTL實現(xiàn)庫文件 jstl.jar和standard.jar以及標(biāo)記庫描述文件夾tld拷貝到Tomcat Webapps的WEB-INF下。
②修改web.xml(Web應(yīng)用配置文件),在其中定義五類標(biāo)準(zhǔn)標(biāo)記庫所對應(yīng)的.tld(標(biāo)記庫描述文件)的 URI。例如在使用核心標(biāo)記庫之前,須編輯web.xml并在其中添加如下代碼:
<taglib-uri﹥http://java.sun.com/jsp/jstl/core <taglib-location﹥/WEB-INF/tld/c.tld |
③在JSP頁面開頭用taglib標(biāo)記庫指令指定要使用的標(biāo)記庫。比如,要使用JSTL core標(biāo)記庫,EL 版本的taglib偽指令為:
<%taglib uri=http://java.sun.com/jsp/jstl/core"prefix="c"%> |
其中:c是核心標(biāo)記庫的前綴名(可由用戶指定或用系統(tǒng)約定前綴c),它在使用標(biāo)記庫標(biāo)記時用到。例如:out是核心庫4個通用標(biāo)記之一,
以獲取“用戶注冊登錄”表單信息的處理程序為例:
使用EL param獲取用戶提交的數(shù)據(jù),可以簡單表示為:
姓名:${param.name}性別:${param.sex}E-mail:${param.email} ... ...
其中,name、sex、email等分別是提交表單的控件名。
***,以JSP開發(fā)《班級論壇》實例項目為例:
DbQuery.jsp是一個查詢數(shù)據(jù)庫的頁面。我們在MySQL數(shù)據(jù)庫classbbs中創(chuàng)建了擁有全部權(quán)限的用戶 cq(password:admin)及數(shù)據(jù)庫表stud。運行http://localhost:8080/proj/BBS/ DbQuery.jsp后將可以顯示stud表中的全部記錄的相關(guān)內(nèi)容。(在開源項目eclipse下編輯編譯運行通過)。
<!-- DbQuery.jsp --> <%@ page contentType="text/html;charset=GBK" %> <!—1.指定要使用的SQL標(biāo)記庫和核心標(biāo)記庫 --> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!—2.設(shè)置數(shù)據(jù)源并保存在datas中 --> <sql:setDataSource url="jdbc:mysql://localhost:4097/classbbs" driver="com.mysql.jdbc.Driver" user="cq" password="admin" var="datas"/> <!—3.執(zhí)行一個數(shù)據(jù)庫查詢并將結(jié)果保存在res中 --> <sql:query sql="select *from stud" var="res" dataSource="${datas}"/> <!—4.顯示查詢結(jié)果 --> <html><body><table border="1"> <tr><th>姓名</th><th>留言</th><th>提交時間</th></tr> <c:forEach var="row" items="${res.rows}"> <tr><td><c:out value="${row.name}"/></td> <td><c:out value="${row.say}"/></td> <td><c:out value="${row.submit}"/></td></tr> </c:forEach></table></body></html> |
結(jié)語
JSTL的core標(biāo)記庫中提供了所有JSP頁面常用功能的集合;SQL標(biāo)記庫提供了對數(shù)據(jù)庫的訪問支持;此外 Internationalization/format標(biāo)記庫提供了國際化(I18N)標(biāo)記集和數(shù)字、日期等的相關(guān)標(biāo)記集用以處理數(shù)據(jù)顯示的國際化和格 式化;XML標(biāo)記庫提供了對XML語言的支持;function標(biāo)記庫提供了對函數(shù)的支持等等。JSTL和EL以巨大的優(yōu)勢簡化了JSP的WEB開發(fā)。限 于篇幅,我們只對其中的core和SQL標(biāo)記庫給出了應(yīng)用實例,希望對喜歡用JSP開發(fā)web應(yīng)用而又畏懼Java語言的同學(xué)會有所幫助。
【編輯推薦】