《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > XSLT技術在JavaWeb開發(fā)中的應用

XSLT技術在JavaWeb開發(fā)中的應用

2009-03-05
作者:易小華

引 言
隨著Web2.0的提出,web開發(fā)將成為未來軟件發(fā)展的主導,各行各業(yè)都離不開網(wǎng)絡,因此軟件開發(fā)人員也一直在探討一種好的開發(fā)框架模型,使得開發(fā)的軟件在給用戶最好的體驗,最大限度地滿足客戶需的同時,也給開發(fā)人員最大的便利和好的分工。本文從一個側(cè)面分析了XSLT技術在JavaWeb開發(fā)中的應用,這種探討是符合軟件開發(fā)目的的可行的方案。
1 技術背景
Servlet是開發(fā)服務器端應用程序的一種強大的語言,它使用Java語言編寫,提供了對整個JAVA API的完全訪問,而且具有一個完備的Servlet API來處理HTTP請求,使用java語言編寫使他與其他相關技術相比具有易于編寫,簡單,平臺無關,可擴展性強,好維護,安全,面向?qū)ο蟮葍?yōu)點,給程序員在使用最先進的技術上帶來了極大的便利性,另外他只需裝載一次從而速度較快。但是由于它在數(shù)據(jù)處理結(jié)果顯示也就是界面設計方面的天生不足,使他在當今強調(diào)分工的社會得不到很好普及,因為編寫服務器端代碼的人一般是軟件開發(fā)人員,用Servlet使得他們不僅要編寫業(yè)務邏輯,還要考慮怎么設計界面,而這些只是美工的專長,顯然不利于分工,很容易分散程序員的精力。那么怎樣來解決這個問題呢方法有很多譬如:JSP技術,XML技術。
使用XML技術很好的解決了這個問題不失為一種上上之策。XML是一種可擴展標記語言它在描述結(jié)構型數(shù)據(jù)信息,并對他進行有效性驗證,以及轉(zhuǎn)化處理和顯示上有自己得天獨厚的優(yōu)勢,因為使用Schema可以很好的描述現(xiàn)實世界中業(yè)務數(shù)據(jù)的規(guī)則,使用DOM技術將XML文檔抽象成一棵節(jié)點樹進行數(shù)據(jù)處理非常便利和靈活,使用Xpath和XSLT語言又可以實現(xiàn)數(shù)據(jù)的靈活顯示,實現(xiàn)與用戶交互的界面設計的靈活性也就是按需取值。另外使用自定義標記是文檔具有很好的可讀性。這兩者各自的優(yōu)點便利性和強大的功能正好實現(xiàn)了優(yōu)勢互補,非常適合Web開發(fā)中的分工和配合,另外現(xiàn)在隨著JAVA和XML這兩大語言的流行,也正說明了他們的融和將是一種必然的趨勢。
具體實現(xiàn)的探討
.
可行的模型:
下面是Servlet和XML結(jié)合應用的一種可行的MVC模型:??

??????

????????

????????

下面通過一個實例來解釋這個模型:
實例從表Paper中取出數(shù)據(jù),再生成XMl文檔,再通過XSLT顯示。
(用戶請求Display.java,Display.java通過ConnectionPool.java和 CommonTable.java從數(shù)據(jù)庫Paper中提取數(shù)據(jù)并在XMLFile.java提供的接口下動態(tài)生成XML文檔Display.xml,最后通過XSLT文檔Display.xsl將XML文檔轉(zhuǎn)換成html頁面提供給用戶).
1. 數(shù)據(jù)庫連接與操作:ConnectionPool.java(負責建立數(shù)據(jù)庫連接)使用連接池實現(xiàn)。CommonTable.java(代碼略)它用于對數(shù)據(jù)庫進行各種操作。
2.?XML文檔的處理:XMLFile.java這是實現(xiàn)Sevlet與XML連接的關鍵,代碼略:
3.?XML文檔(Display.xml)和XSLT轉(zhuǎn)換(Display.xsl):(代碼略)
4.?使用Servlet生成XML文檔:Display.java
.Display.java
import common.XFile.*;?//??引進XMLFile.class
import common.database.*;?//?引入數(shù)據(jù)庫操作包
import javax.servlet.*;?//?引入Servlet包
import javax.servlet.http.*;
import java.io.*;?//?文件操作
import java.util.*;
public class Display extends HttpServlet {?//?該實例對象可以實現(xiàn)對已有XML靜
? private XMLFile file;?//?態(tài)文檔中插入動態(tài)內(nèi)容(替換標記),并對一些字符進行替
? public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {?//?換以方便插入數(shù)據(jù)庫。
??????? response.setContentType("text/xml");?//?設置為XML類型
??????? PrintWriter out = new PrintWriter (response.getOutputStream());
??????? file=new XMLFile("xml\\Display.xml");?//?引入實例文檔
??????? CommonTable table1=new CommonTable("Paper");?//?建立對Paper的數(shù)據(jù)庫炒
??????? //?作對象,獲取Title,data,author,記錄數(shù)等數(shù)據(jù)
??????? Vector title=table1.selectCol("Title","PaperID");
??????? Vector date=table1.selectCol("SubmitTime", "PaperID");
??????? Vector author=table1.selectCol("author", "PaperID");
??????? int number=table1.count ("PaperID", "");
??????? String replace="";
??????? int i;
//??根據(jù)提取的數(shù)據(jù)生成動態(tài)XML數(shù)據(jù)
??????????? for(i=number-1; i>=0; i--)
??????????? {
??????????????? Vector num=table1.find("PaperID","Title='"+title.elementAt(i).toString()+"'","",1,1,100);
??????????????? String t=num.get(0).toString();
???? ???? long tmLong=Long.parseLong(date.elementAt(i).toString());
???? ???? Date currentDate=new Date(tmLong);
??????????????? replace+=""+title.elementAt(i).toString ()+""+
????? ???? ""+author.elementAt(i).toString()+""+
??? ?????? ""+(currentDate.getYear()+1900)+"."+(currentDate.getMonth()+1)+"."+(currentDate.getDate())+""+
??????????????????? "visit.html?ID="+t+""+
??????????? ??"
";
???????????? }
//?對一些特殊字符進行替換,以方便插入數(shù)據(jù)庫
??????? file.replaceAll("<%replace%>",replace);
??????? file.replaceAll("<%replace1%>",replace1);
??????? file.replaceAll("^","'");
??????? out.println(file.getContent());
??????? out.close();
??? }
}
下面可以對JSP和XML對界面設計的應用可以做一個比較:
.JSP:
1.? JSP構造頁面太痛苦. 代碼嵌入頁面導致頁面臃腫, 邏輯復雜, 不易編輯.
2. 程序員和美工的接口必須精確定義. 復雜的嵌套輸出必須構造復雜的顯示類作為接口.
3. 調(diào)試JSP必須等到前端程序結(jié)束才能看到效果.
4. 調(diào)試JSP效率極低, 一點點小的修改都會引起jsp的重新編譯.
.XSLT:
1.JDK1.4已經(jīng)自帶XML API和XSLT, 并且支持XSLT 1.0標準. IE6也支持同樣標準.
2. 開發(fā)前先制作接口用的demo XML, 程序員的輸出必須符合此格式. 美工根據(jù)此格式制作XSL. 接口可視化, 明確定義.
3. 只要定義好接口XML, 兩邊幾乎不需要再聯(lián)合調(diào)試. 美工利用接口XML和IE6就可以直接看到效果.
4. 程序員只要保證輸出的XML的是否符合接口, 直觀的做文字性對比.
5. 大量頁面可重用的部分能方便的抽象出來, 在XSL文件中include/import進來. 高度重用, 標準化.
6. 寫XSL可大量采用template, 結(jié)構清晰, 修改方便, 寫頁面變成搭積木, 不再有jsp的層層嵌套.
7. 對于不同的終端設備, 可以定制不同的XSL, 很方便的就能夠支持手機, pda...
8. 在程序中利用支持XML的工具, 比如Mysql, 可以直接生成XML結(jié)果, 無需復雜編程
9.實現(xiàn)美工與程序員的很好的分工,使開發(fā)更加簡單。
總? 結(jié)
總之,隨著互聯(lián)網(wǎng)的日趨成熟,和XML,JAVA語言的日益流行JAVA和XML技術結(jié)合帶來的好處將呈現(xiàn)在大家眼前。
附注:
參考文獻:

1.?《JavaSevlet編程》Jason Hunter,William Crawford 中國電力出版社 2002年6月
2.?《XML技術及其使用》沈裕和? 北京信息工程學院內(nèi)部教材? 2005
3.?《java核心技術》卷Ⅱ Cay S.Horstmann 機械工業(yè)出版社 2003.1
4.?《XML技術內(nèi)幕》? Natanya Pitts? 機械工業(yè)出版社 2002年1月

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久狠狠亚洲综合| 欧美日韩色婷婷| 一本色道久久88综合日韩精品| 亚洲大片av| 欧美一级视频免费在线观看| 亚洲无吗在线| 在线一区视频| 在线视频亚洲一区| 亚洲视频一区在线观看| aa国产精品| 日韩系列欧美系列| 日韩亚洲欧美一区| 日韩视频第一页| 日韩一级精品| av成人免费在线观看| 99ri日韩精品视频| 一本一本久久| 亚洲一区精品视频| 亚洲综合日本| 午夜在线一区| 欧美一区二区三区四区高清| 欧美在线|欧美| 亚洲国产一区在线| 亚洲人成免费| 日韩一区二区福利| 亚洲视频第一页| 亚洲欧美国产精品桃花| 欧美一区二区三区喷汁尤物| 欧美呦呦网站| 久久亚洲影音av资源网| 蜜臀av国产精品久久久久| 牛夜精品久久久久久久99黑人| 欧美成人高清视频| 欧美精品麻豆| 欧美性做爰毛片| 国产欧美精品日韩精品| 国产一区二区0| 在线日韩欧美视频| 日韩一级精品视频在线观看| 亚洲一区免费网站| 久久精品国产精品亚洲| 久久精品视频在线看| 亚洲精品激情| 亚洲一区免费观看| 久久国产精品毛片| 免播放器亚洲| 欧美三级在线视频| 国产视频一区在线观看| 在线播放中文字幕一区| 9i看片成人免费高清| 午夜亚洲精品| 亚洲精品在线视频| 午夜久久影院| 久久综合网hezyo| 欧美日韩精品久久| 国产日韩亚洲| 亚洲经典在线| 午夜精品视频在线观看一区二区| 亚洲激情在线观看视频免费| 亚洲一区三区视频在线观看| 久久久蜜桃一区二区人| 欧美日本中文| 国产亚洲精品高潮| 亚洲精品专区| 欧美一区三区二区在线观看| 亚洲精品综合久久中文字幕| 亚洲欧美国产高清| 欧美成人免费在线视频| 国产精品色婷婷| 亚洲激情在线播放| 香蕉亚洲视频| 亚洲一区二区久久| 麻豆9191精品国产| 国产精品日本精品| 亚洲日本va午夜在线电影| 欧美一区永久视频免费观看| 一区二区三区免费看| 久久久在线视频| 国产精品久久777777毛茸茸| 一区二区三区在线不卡| 亚洲欧美日韩精品在线| 夜夜嗨av色一区二区不卡| 久久久精彩视频| 国产精品久久| 亚洲每日在线| 亚洲国产精品综合| 欧美一区二区三区啪啪| 欧美日韩另类在线| 国产一在线精品一区在线观看| 在线综合+亚洲+欧美中文字幕| 亚洲人成啪啪网站| 久久久久网址| 国产精品视频专区| 亚洲毛片av| 亚洲欧洲一区二区三区在线观看| 欧美与黑人午夜性猛交久久久| 欧美日韩综合不卡| 亚洲日本中文字幕免费在线不卡| 久久精品五月| 久久精品九九| 国产农村妇女精品一二区| 野花国产精品入口| 日韩网站在线看片你懂的| 久热精品视频在线观看一区| 国产亚洲精品v| 午夜激情综合网| 午夜精品理论片| 欧美日韩在线视频一区二区| 亚洲精品美女| 亚洲精品黄网在线观看| 欧美刺激午夜性久久久久久久| 国产有码一区二区| 亚洲欧美日韩在线不卡| 亚洲欧美日韩中文视频| 欧美午夜一区二区三区免费大片| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲黄一区二区| 欧美成人国产| 亚洲国产小视频| 亚洲乱码国产乱码精品精天堂| 免费观看一区| 亚洲高清在线观看| 亚洲人体1000| 欧美好骚综合网| 亚洲精品国产无天堂网2021| 亚洲精品在线电影| 欧美日本在线观看| aⅴ色国产欧美| 亚洲女优在线| 国产精品手机在线| 亚洲欧美日韩久久精品| 欧美制服丝袜第一页| 国产亚洲一区在线| 久久精品欧美| 欧美高清一区| 亚洲精品美女在线观看播放| 亚洲网站视频福利| 国产精品剧情在线亚洲| 亚洲欧美国产精品va在线观看| 欧美影片第一页| 国产综合亚洲精品一区二| 亚洲国产高清在线观看视频| 免费观看成人网| 亚洲毛片在线看| 午夜一区在线| 国模精品一区二区三区| 亚洲国产一区二区三区在线播| 欧美国产三区| 亚洲天堂成人| 久久久久成人精品| 亚洲黄页一区| 亚洲在线观看免费| 国产情人节一区| 亚洲欧洲日本一区二区三区| 欧美日韩精品欧美日韩精品| 亚洲欧美久久久| 久久视频一区| 亚洲巨乳在线| 久久成人资源| 亚洲国产精品福利| 亚洲欧美在线一区二区| 国内精品久久久久久久影视麻豆 | 欧美日韩国产精品| 亚洲欧美成人一区二区三区| 免费在线一区二区| 亚洲素人在线| 免费永久网站黄欧美| 亚洲视频导航| 麻豆成人在线播放| 国产精品99久久不卡二区| 久久久久久综合| 99这里只有精品| 久久久久久久综合| 亚洲伦伦在线| 国产精品乱码| 午夜视频在线观看一区二区| 美日韩精品视频免费看| 99国产精品私拍| 久久婷婷影院| 一区二区三区成人精品| 久久影院午夜论| 亚洲一区二区黄| 欧美激情五月| 欧美在线免费一级片| 欧美日韩不卡在线| 久久国产精品色婷婷| 欧美亚洲第一区| 亚洲精品国产欧美| 国产一区二区三区不卡在线观看| 一区二区三区精品视频| 国内精品久久久久伊人av| 亚洲无玛一区| 在线看欧美日韩| 久久国产日本精品| 亚洲视频二区| 欧美区亚洲区| 亚洲高清不卡在线| 国产精品影视天天线| 中文一区二区| 亚洲二区在线视频|