亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于 J2EE 體系實現多層結構 Blog 平臺(1)

2019-11-18 12:28:09
字體:
來源:轉載
供稿:網友

  Blog(WebLog)在Internet上越來越流行。許多網友都有了自己的Blog,通過Blog展示自己,結識更過的網友。比較聞名的Blog平臺是基于asp.net的開源項目.Text。但是它的邏輯全部以存儲過程的形式放在數據庫中。雖然存儲過程能大大提高數據操作的效率,但是存儲過程本身是結構化的程序,無法發揮面向對象的威力,也不便于實現代碼復用。
  
  因此,我決定實現一個基于J2EE體系的多層結構的Blog平臺,功能和界面和.Text非常類似,暫命名為Crystal Blog。實現的功能有:發表和編輯文章;多用戶支持;全文檢索;rss支持;圖片治理;SMTP郵件發送等常見功能。界面如下:
   基于 J2EE 體系實現多層結構 Blog 平臺(1)(圖一)


  一、選擇平臺和框架
  由于使用J2EE平臺,我們預備采用WebLogic Server 8.1作為運行平臺,使用WebLogic Workshop8.1這個強大的集成化IDE作為開發工具。數據庫選擇MS SQL Server 2000 SP3,建立一個名為blog的數據庫存儲所有的用戶數據。
  
  由于我們并沒有針對特定數據庫編碼,稍后我們會使用其他數據庫測試。在系統設計之前,選擇一個優秀的框架能大大提高開發效率。SPRing是一個輕量級的J2EE框架。它覆蓋了從后臺數據庫的JDBC封裝到前臺Web框架的幾乎所有方面。并且,Spring的各個模塊耦合非常松散,我們既可以用它作為整個應用程序的框架,也可以僅僅使用它的某一個模塊。此外,Spring非常強大的集成功能使我們可以輕易地集成Struts編寫的Web端,或者使用Hibernate作為后端的O/R Mapping方案。
  
  Spring的核心思想便是IoC和AOP,Spring本身是一個輕量級容器,和EJB容器不同,Spring的組件就是普通的java Beans,這使得單元測試可以不再依靠容器,編寫更加輕易。Spring負責治理所有的Java Beans組件,同樣支持聲明式的事務治理。我們只需要編寫好Java Beans組件,然后將它們“裝配”起來就可以了,組件的初始化和治理均由Spring完成,只需在配置文件中聲明即可。這種方式最大的優點是各組件的耦合極為松散,并且無需我們自己實現Singleton模式。
  
  由于后臺要使用關系數據庫存儲數據,使用O/R Mapping必不可少。iBatis是又一個類似于Hibernate的O/R Mapping方案,特點是小巧,配置簡單,查詢靈活,完全符合我們的要求。
  
  除了Spring和iBatis,用到的第三方組件還有:用于全文搜索的LUCene引擎,用于文件上傳的common-file-upload1.0,用于輸出RSS的RSSLibJ1.0 RC2。
  
  由于使用Spring這個輕量級框架,就無需EJB服務器,只需要Web服務器即可。因此,系統可以運行在WebLogic Server,Tomcat和Resin等支持Servlet和jsp的Web服務器上。
  
  二、系統設計
  很顯然,多層結構的J2EE架構能保證系統的靈活性和可擴展性。我們仍然采用表示層/邏輯層/持久層三層設計。
   基于 J2EE 體系實現多層結構 Blog 平臺(1)(圖二)
  整個系統以Spring為基礎,持久層采用DAO模式和iBatis O/R Mapping,封裝所有數據庫操作;中間層是由Spring治理的普通的JavaBean,采用Fa?ade模式;表示層使用Spring提供的MVC框架。由于Spring對其他框架的良好集成,我們采用Velocity作為View。由于Velocity不能調用Java代碼,從而強制使用MVC模式而不是在View中嵌入邏輯代碼。
  
  三、配置服務器
  在WebLogic中新建一個Configuration,命名為blog,添加一個數據源,命名為jdbc/blog:
  基于 J2EE 體系實現多層結構 Blog 平臺(1)(圖三)
  整個應用程序的目錄結構如下:
  
  crystalblog/
  + doc/ (存放API文檔)
  + report/ (存放JUnit測試結果)
  + src/ (存放java源程序)
  + web/ (web目錄)
   + manage/ (存放blog治理頁)
   + SKIN/ (存放blog界面頁)
   + upload/ (存放用戶上傳的圖片)
   + WEB-INF/
    + classes/ (存放編譯的class文件)
    + lib/ (存放用到的所有jar文件)
    + search/ (存放Lucene的index)
    + c.tld (使用jstl必須的文件)
    + dispatcher-servlet.xml (Spring配置文件)
    + web.xml (標準web配置文件)
  + blog.war (打包的可部署應用)
  + build.xml (ant腳本)
  
  四、編寫Ant腳本
  Ant是一個非常棒的執行批處理任務的工具。使用Ant能使編譯、測試、打包、部署和生成文檔等一系列任務全自動化,從而大大節省開發時間。首先我們把用到的所有.jar文件放到/web/WEB-INF/lib中,然后編寫compile任務,生成的class文件直接放到web/WEB-INF/classes目錄下。假如編譯成功,就進行單元測試,單元測試的結果以文本文件存放在report目錄中。假如測試通過,下一步便是打包成blog.war文件。接著把應用部署到服務器上,直接將web目錄的內容復制到%BEA_HOME%/user_projects/domains/blogdomain/applications/blog/目錄下即可。假如要在Tomcat上部署,直接將整個web目錄復制到%TOMCAT%/webapps/blog/下。最后,假如需要,可以用javadoc生成api文檔。
  
  五、系統設計
  Crystal Blog共分成三層結構:后臺數據持久層,采用DAO模式;中間邏輯層,采用Facade模式;前端Web層,采用MVC結構,使用JSP作為視圖。
  
  設計Domain對象
  
  Domain層是抽象出的實體。根據我們要實現的功能,設計以下實體,它們都是普通的Java Bean: Account:封裝一個用戶,包括用戶ID,用戶名,口令,用戶設置等等。 Category:封裝一個分類,一共有3種Category,分別用來治理Article,Image和Link,一個Account對應多個Category。
  
  Article:封裝一篇文章,包括Title,Summary,Content等等,一個Category對應多個Article。
  
  Feedback:封裝一個回復,包括Title,Username,Url和Content,一個Article對應多個Feedback。
  
  Image:封裝一個圖片,Image只包含圖片信息(ImageId,Type),具體的圖片是以用戶上傳到服務器的文件的形式存儲的。一個Category對應多個Image。
  
  Link:封裝一個鏈接,和Category是多對一的關系。有Title,Url,Rss等屬性。
  
  Message:封裝一個消息,使其他用戶在不知道Email地址的情況下能夠通過系統發送郵件給某個用戶。
  
  最后,為了唯一標識每條數據庫記錄,我們需要一個主鍵。在MS SQL Server和Oracle中可以使用自動遞增的主鍵生成方式。但是很多數據庫不支持自動遞增的主鍵,考慮到移植性,我們自己定義一個Sequence表,用于生成遞增的主鍵。Sequence表有且僅有7條記錄,分別記錄Account到Message對象的當前最大主鍵值。系統啟動時,由SqlConfig負責初始化Sequence表。SequenceDao負責提供下一個主鍵,為了提高效率,一次緩存10個主鍵。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美刺激性大交免费视频| 亚洲欧美精品中文字幕在线| 亚洲网站在线观看| 亚洲男人第一网站| 国产精品香蕉国产| 在线电影av不卡网址| 91情侣偷在线精品国产| 51视频国产精品一区二区| 国产精品久久久久久影视| 欧美人交a欧美精品| 欧美特级www| 亚洲欧美一区二区精品久久久| 日韩欧美在线网址| 亚洲精品国产电影| 亚洲欧美成人一区二区在线电影| 秋霞午夜一区二区| 日韩精品小视频| 成人两性免费视频| 韩国三级日本三级少妇99| 国模gogo一区二区大胆私拍| 91久久国产综合久久91精品网站| 亚洲国产日韩欧美在线99| 欧美日韩在线视频一区二区| 精品香蕉在线观看视频一| 国产在线观看一区二区三区| 欧美日韩福利电影| 久久视频在线直播| 国产伦精品一区二区三区精品视频| 成人久久一区二区三区| 久久国产精品久久国产精品| 欧美日韩加勒比精品一区| 亚洲资源在线看| 亚洲精品国偷自产在线99热| 久久久女人电视剧免费播放下载| 欧美在线视频导航| 久久久精品999| 日韩视频免费在线观看| 欧美午夜精品在线| 亚洲精品色婷婷福利天堂| 中文字幕亚洲无线码a| 疯狂做受xxxx欧美肥白少妇| 国产一区二区三区久久精品| 国产丝袜精品第一页| 成人黄色在线观看| 亚洲日韩欧美视频| 91国偷自产一区二区三区的观看方式| 欧美极品欧美精品欧美视频| 亚洲国产美女精品久久久久∴| 欧美激情精品久久久久久久变态| 国产精品999999| 高清欧美性猛交xxxx黑人猛交| 色天天综合狠狠色| 欧美最顶级丰满的aⅴ艳星| 91免费看片网站| 国产成人久久久精品一区| 国产精品日韩精品| 欧美性生交大片免费| 精品福利一区二区| 91亚洲精品一区二区| 欧美成人免费在线观看| 91香蕉嫩草神马影院在线观看| 亚洲欧美成人一区二区在线电影| 国产一区二区三区网站| 久久精品国产视频| 亚洲美女av在线播放| 亚洲国产成人精品一区二区| 国内精品久久久久久久| 欧美日本中文字幕| 久久99久国产精品黄毛片入口| 国产精品电影观看| 欧美精品videosex性欧美| 中文国产亚洲喷潮| 国产精品久久久久久久久男| 91精品国产免费久久久久久| 日本三级久久久| 日韩高清电影免费观看完整| 亚洲精品美女久久久| 国产精品444| 91午夜理伦私人影院| 亚洲影视中文字幕| 欧美野外猛男的大粗鳮| 日韩精品在线视频观看| 欧美午夜精品伦理| 欧美主播福利视频| 高清一区二区三区四区五区| 欧美激情第1页| 亚洲成人av中文字幕| 日韩一中文字幕| 91久久嫩草影院一区二区| 欧美成人一区在线| 一区二区三区久久精品| 97人洗澡人人免费公开视频碰碰碰| 日日骚av一区| 亚洲国产一区二区三区在线观看| 国产精品精品一区二区三区午夜版| 久久香蕉频线观| 日韩日本欧美亚洲| 久久青草福利网站| 黑人巨大精品欧美一区二区免费| 日韩av大片在线| 最近2019中文字幕mv免费看| 亚洲国产精品成人一区二区| 成人乱色短篇合集| 亚洲欧美制服丝袜| 欧洲精品在线视频| 日韩在线观看免费全| 日韩av三级在线观看| 欧美极品在线播放| 精品久久香蕉国产线看观看gif| 日韩男女性生活视频| 亚洲国产毛片完整版| 欧美一级淫片videoshd| 91国产精品视频在线| 亚洲欧美精品一区二区| 欧美视频中文在线看| 亚洲精品国产美女| 538国产精品一区二区在线| 91精品国产91久久久久久| 亚洲bt欧美bt日本bt| 欧美最猛性xxxxx免费| 国产91av在线| 日韩中文视频免费在线观看| 成人做爽爽免费视频| 国产97色在线|日韩| 亚洲欧美三级在线| 成人深夜直播免费观看| 国产精品美女久久久久av超清| 国产有码一区二区| 久久精品男人天堂| 成人黄色短视频在线观看| www.xxxx精品| 亚洲第一中文字幕在线观看| 亚洲天堂网站在线观看视频| 日韩av影视综合网| 亚洲自拍偷拍视频| 日韩欧美在线视频免费观看| 91精品国产高清久久久久久久久| 欧美日韩精品在线播放| 欧美日韩在线观看视频小说| 91免费福利视频| 欧美精品18videos性欧| 国产极品jizzhd欧美| 成人国产精品久久久久久亚洲| 国产精品网红直播| 亚洲香蕉av在线一区二区三区| 国产日韩精品一区二区| 97在线视频一区| 欧美一级在线播放| 亚洲天堂第一页| 成人精品一区二区三区| 久久躁狠狠躁夜夜爽| 欧美丰满少妇xxxx| 欧美国产在线视频| 久久久欧美精品| 91亚洲精品久久久| 国产成一区二区| 日韩电影中文 亚洲精品乱码| 91久久在线视频| 亚洲成**性毛茸茸| 国产精品av免费在线观看| 欧美成人精品不卡视频在线观看| 欧美成人午夜免费视在线看片| 欧美日韩国产综合新一区| 中文日韩在线视频|