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