今天放上自己使用 MyEclipse 開發索迪杯 50 強項目的過程,也算做 Java 中使用開源 SSH 框架的教程吧,整個項目因為 CG 對 Spring 目前並不太熟悉,所以取消了 Spring 部分,不過 CG 會簡單介紹一下在哪些部分可以使用 Spring,CG 自己也是初學者,所以如果哪些部分有不對或者有問題的地方,歡迎高手不吝指正,在此謝過。
首先了解一下基本環境 Java: J2EE 5 SDK SUN 提供的一大包 Java 工具; IDE: MyEclipse 7 大名鼎鼎的 java IDE 工具; web: tomcat 6 JSP 的服務端工具; DB: MySql5 這個大家應該知道,免費的數據庫,大家需要下載相應的 JDBC 驅動。 使用框架:Struts1.2 + hibernate3
這些工具除了 Myeclipse 是收費軟件之外都是免費,大家可以都可以免費到網絡上下載,Myeclipse 相信大家 GG 一下應該可以找到可以使用的方法,下載完成後安裝,按照需要配置好就可以開始,如果大家對環境的配置還不太明白的話,請關注我的下一篇日誌吧。
好正式開始,首先打開 Myeclipse 環境,然後新建一個 Web Project,點擊 File->New -Web Project, 自己輸入名稱,然後選擇響應的 J2EE 版本,我建議使用 J2EE5,可以直接使用 JSTL。
下一步,啟用項目的 Hibernate 和 Struts capability, 選擇剛剛新建的項目,單擊 Eclipse 標題的 MyEclipse 的 Project Capabilities -> Add Hibernate Capability
首先選擇 Hibernate 的庫,我選擇的是 Hibernate3 因為 3 相對來說是比較穩定的一個版本然後選擇 Hibernate 的庫放的位置,如果大家是直接在本機上調試,可以放在 build path,如果要提交或者轉移發布,建議選擇第二選項拷貝到 WEB-INF 下的 lib 下去
接著,就是選擇 Hibernate 的配置文件的位置,一般是默認,直接下一步
然後,選擇數據庫的連接配置,大家如果已經配置了數據連接信息,直接選擇就好, CG 這裡使用的自己配置的 MySql
下一步,選擇 Hibernate 的會話工廠的位置,大家可以放在源代碼下 hibernate 下的包中,方便重構,可以選擇已有或者新建,最後 Finish,Hibernate 的支持配置完成
接著是配置 struts 支持,步驟跟配置 Hibernate 相同,Project Capabilities -> Add Struts Capability,再選擇相應的 struts 版本,我選擇的是 1.2,然後配置一下下面的包路徑,然後 Finish, 完成,如果還需要 Spring 支持的話,步驟類似,這裡略過。
配置 Struts + Hibernate 完成,接著就改輪到 Hibernate 的數據對象了,Myeclipse 為我們提供了比較方便的方法了,首先打開 DB browser,然後打開你配置好的數據庫連接,如果沒有的話,大家可以先的新建一個,填一下驅動和鏈接字符串就好。 DB browser 可以在 Window - > show View 下面找到,如果沒有,可以再到 others 下面找。選中我們需要生成表
然後右擊 -> 選擇 Hibernate Reverse Engineering, 這個選項可以看大下面的向導
配置一下自己的項目 SRC 路徑和包名,選中下面的創建 DAO 等選項,只要你的數據表的約束沒有問題,直接 finish 就好了,然後會在 SRC 中生成相應的 DAO 文件,如圖
下一步就是 Struts 的詳細配置了,實現表示層的功能了,CG 的 MyEclipse 自動集成了 FreeMaker 插件,所以可以直接拿來設計。找到 Web-Inf 下的 Struts-config.XML 文件打開,然後進入設計界面,大家可以根據自己的需要創建 Action,FormBean,Jsp 等,下面是 CG 的最終效果圖。
一共四個 JSP 頁面,其中 editor 是一個帶 Form 的 JSP 一個 Action,GlobalAction 類完成全部的動作處理,一個全局轉向,用於錯誤處理
接著大家就是完成響應前端的設計了,設計一下自己的頁面,本次教程的源代碼大家可以在 CG 的日誌中找到,大家拿去參考,這裡不詳細講解。
下一步,創建邏輯層的 JavaBean 對象和相關表的 Service 類,用於對下層的數據表 DAO 對象進行數據讀取,修改等操作,並且把這些操作組合,形成完整的表格服務類用於上一層的 Action 的調用,使得 Action 再與 DAO 分離,這裡 CG 除了對單個表單獨創建了服務類之外還有一個跨表查詢的類 SpanTableService 用於多表之間的查詢,建議大家接口加實現類方式,因為使用多接口繼承方式可以方便的實現對多個表的實現類的調用,而不需要單獨實現,具體文件列表現在如下
下面的主要的實現類 Student 的部分代碼截圖,其他的表基本類似
好了,業務層基本已經寫好了,這裡請大家注意,為了使得 DAO 對象的創建更加方便 CG 創建了一個 DAOProvider 靜態類來是提供各個表的 DAO 對象,我把他們放在 util 包當中,另外為了用於表示層 Action 中提供 Service 對象,CG 又創建了一個 Service 的提供類 ServiceProvider 類,大家如果使用 Spring 的話,可以考慮用 Spring 來托管相應的對象,讓 Spring 來自動生成相應的對象,因為這裡沒了 Spring,只能先用 Provider 來實現了,因為是簡單的 Demo,所以使用直接返回對象即可,大家可以考慮用 XML 配置 DAO 列表,這裡不詳述了具體代碼截圖如下
好了,輪到最核心的類了,GlobalAction, 這是處理用戶請求和處理的類,這裡 CG 使用的是 Dispache 轉向類,直接由請求中的參數來處理不同的動作,大家直接對不同的動作請求進行相應的處理即可,處理完成後選擇響應的轉向,下面是返回學生列表代碼的截圖
好了,業務層基本完成,下面回到表示層,這裡要處理的就是相關的動態生成的數據了,如果是用 Struts 的話,就是 Struts 的標籤的使用了,放個代碼截圖,這是遍歷所有 stu Bean 中相關屬性並且輸出。
如果這些都做完的話,大家也先別著急調試,還有一些東西,配置一個 EncoderFilter 學過 JSP 的朋友的話肯定用過,這裡還是要講一下,CG 因為搞錯了配置,浪費了不少時間,encoderFillter 類源代碼可以在 Util 包下面找到,下面是代碼截圖,大家看好是 extends HttpServlet implements Filter 哦,不要搞錯,CG 就錯在這裡
然後在 WEB-INF 的 web.xml 下面配置一下這個 Filter,截圖如下
最後,如果大家使用 EL 表達式的話,告訴大家一個下技巧,可以直接配置 web.XML 代碼如上圖,就不需要每個頁面 <%@ page isELIgnored="false" %> 了。
到這裡,大家就可以進行相應的調試工作了,啟動一下 tomcat,然後發布你的 Proj 吧。CG 的索迪任務也就完成了,在這裡把開發過程分享給大家,如果大家有任何問題的話,可以直接給我留言,源代碼下載地址
http://www.lidaren.com/code/SodiDemo.zip
運行效果,大家可以參看 CG 最近的日誌,歡迎大家評論,指正,CG 在此感謝。
李大仁博客原創,歡迎轉載,转载请注明引用自李大仁博客