JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Web Framework » Struts  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [分享]SSH教學(附原始碼)
mmncsmm





發文: 12
積分: 0
於 2011-06-20 10:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
版本:Struts 1.3.10 + Spring 3.1 + Hibernate 3.6

包含:Tiles 、 OpenSessionInView 及 連接DB

資料庫:MS SQL2005

Schema:在\BlankSSH\dev\sql.txt,為了方便說明,僅用兩張Table。



下載:http://mmncsmm01.appspot.com/redirect?mode=1 ,可直接從Eclipse import。

SSH架構說明:

src下的folder
action:DispatchDemoAction繼承BaseAction,ExampleAction繼承Action,提供兩種寫法做參考,即可直接get service,不用再呼叫spring WebApplicationContext。

common:共用變數及BaseAction。BaseAction中繼承DispatchAction,也可將seesion處理的方法寫在此。

filter:簡易登入權限設定。

formbean:提供給action使用。

persistence:Hibernate dao,此資料夾階由Myeclipse自動產生。

service:主要的商業邏輯寫在這,依照功能切分不同服務。
ex:MemberService包含會員的新增、刪除和修改等。

utility:獨立元件,可直接搬移至其他專案。ex:檔案下載、發送郵件。

config:spring物件注入,不開放給外部修改的xml。
ex:LoginCheckerFilter.xml,登入權限
DAOService.xml,每個Service要用到的dao
BaseService.xml,所有的Service
applicationContext.xml,Hibernate基本設定檔
TransactionManager.xml,用OpenSessionInView必需

WEB-INF下的folder
config:spring物件注入,開放給外部修改的xml,方便於環境異動。
ex:DataSourceService.xml,DB登入帳密。

tiles:主要有兩部分,一.layout為tiles的框架,二.page為所有jsp頁面。

細部說明:
從Service開始說明,所有的xxxService都是interface,由xxxServiceImpl實作,每個service所用到的dao,均定義在DAOService.xml。
唯一例外的是BaseService,此BaseService注入了所有Service,定義在BaseService.xml,提供給BaseAction使用。
讀起來好像有點饒舌,看圖應該比較好理解



為什麼我要搞的這麼複雜呢?

當我在寫action需要取得Service時,必須要寫
ServletContext application = this.getServlet().getServletContext();
WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(application);
xxxService serice = (xxxService) wac.getBean("xxxService");
每次都要寫這麼一大串,感覺好煩,我又常常忘記getBean裡面要填的名稱,而且還要強制轉型。
所以最後將所有Service都注入BaseService,再BaseAction中只要寫一次getBean("BaseService"),
在DispatchDemoAction中我只要寫this.getMemberService(),就可以取得MemberService,多方便。

這是小弟第一次發這種文章,請各位多多指教
原始文章:http://mmncsmm.blogspot.com/2011/06/framework-ssh.html


mmncsmm edited on 2011-08-04 17:55
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
4395 [分享]SSH教學(附原始碼) mmncsmm 2093 2011-06-20 10:41
3008 Re:[分享]SSH教學(附原始碼) mmncsmm 431 2011-06-22 12:24
2954 Re:[分享]SSH教學(附原始碼) bbbr 608 2011-06-22 14:24
3080 Re:[分享]SSH教學(附原始碼) mmncsmm 172 2011-06-23 12:31
» JWorld@TW »  Web Framework » Struts

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8