MyEclipse下Spring、Hibernate、Struts結合
時下流行的開發模式:Spring+Hibernate+Struts,在這裡我介紹一下Spring+Hibernate的結合,加入Struts表示層那是非常簡單的事情了。話不多說,讓我們現在開始:
資料庫準備:
資料庫名稱:AT_SMS
表名稱:admin
欄位如下:
sid bigint 從1開始自動增加,步長為1,單獨做表的主鍵name varchar(50)
password varchar(50)
開發軟體準備:Eclipse 3.1
MyEclipse Enterprise Workbench v4.1.1 GA
JDK1.4.2
Spring1.2[MyEclipse自帶的]
Hibernate3.0[MyEclipse自帶的]
步驟:
1、設定自己的WorkSpace[D:Eclipse3.1MyWorkspace];
2、建立普通Java工程[不是MyEclipse Web工程]MyProject[D:Eclipse3.1MyWorkspaceMyProject;
2A、配置資料庫連線備用。東東在Window->Open Perspective->My Eclipse Database Explore下。在左邊空白框點右鍵選擇New,彈出框後填寫Profile name:MyTestDB;驅動點Configure database driver去配置,其它的看著填,不想看到所以資料庫就在第二步選擇Display the selected schemas,點按鈕Add時會自動連線資料庫顯示所有的資料,選擇你想看到的,在這我們選擇AT_SMS,點finish完成了。
3、新增Spring相關東西[點選選單MyEclipse->Add SPring Capabilities...][注意:把游標停在工程根目錄才能新增,不然是灰灰的];彈出視窗預設選中Spring1.2 Core包,把Spring1.2 ORM/DAO/Hibernate3選中,把Spring1.2 AOP,Spring1.2 Testing都選中[省得測試時候遇到找不到jar再去匯入],next,建立一個src目錄存放配置檔案,finish。
4、新增Hibernate相關東西,注意根Spring關聯起來,資料庫連線選擇之前建立的MyTestDB即可,Dialect預設是Sysbase,我用Sql Server,所以要改過來;Hibernate的bean ID設成跟Spring的一樣,結果配置檔案提示ID不唯一,哈哈,那就清除Hiebernate相關的東西先,這還有些麻煩,首先要切換到MyEclipse J2EE Development[如果沒有這個可能是你的工作區沒有這種工程,去建立一個MyEclipseJ2EE工程],接著把工程檢視從PackageExplorer切換到Navigator,刪除檔名帶Hibernate字樣的檔案,開啟.project檔案,刪除裡頭關於Hibernate的一個buildCommand,和一個nature.Ok了,可以重新新增Hibernate相關的東西.[注意:SessionFactory就是Spring用來關聯Hibernate的那Bean的ID我填SessionFactory,填寫資料庫引數時的那個BeanID就是資料來源名稱,我填dataSource]
5、接下來產生Hibernate對映,將檢視切換到MyEclipse Database Explorer,點右鍵開啟連線,選擇你要產生Java程式碼的表,我們在這選擇admin,彈出視窗發現會預設帶出一些引數,由於這個DB連線不是屬於單個工程的是個全域性的東東,預設引數可能不是你想要的,不管那麼多你選擇Java src folder到你當前工程的src目錄,這就與你的工程關聯起來了,引數也跟著變了,Java package設為com.kama.hibernate,選中產生Spring DAO;其它預設,表的主鍵產生要設定一些,選中表名,在ID Generator選擇native;就這樣了。
6、讓Spring管理資料庫事務,在配置檔案applicationContext.xml中新增內容:
7、事務中,必須是介面呼叫,具體原因請看其它資料,現在我們增加介面:AdoInterface,在其中定義方法:public void save(Object transientInstance);[用Object做引數型別是為了讓所有DAO類共用這個介面];
8、AdminDAO中增加實現介面AdoInterface,修改其save方法的宣告,public void save(Object transientInstance)
9、測試方法一,寫如下程式碼來測試:
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
AdoInterface dao = (AdoInterface) ctx.getBean("AdminDAO");
System.out.println(dao.toString());
Admin admin = new Admin();
admin.setName("Kama");
admin.setPassword("123456");
dao.save(admin);
System.out.println("--測試完畢--");
看到插入的記錄了吧!
10、測試方法二:在工程屬性的JAVA Builder path->Libraries裡頭設定匯入D:MyEclipseeclipsepluginscom.genuitec.eclipse.springframework_4.1.1data1.2libspring-mock.jar
產生測試類繼承org.springframework.test.AbstractTransactionalSpringContextTests;修改:
protected String[] getConfigLocations() {
return new String[]
{ "/applicationContext.xml" };
}
增加:
private AdoInterface adminDAO;
public void setAdminDAO(AdoInterface adminDAO)
{
this.adminDAO = adminDAO;
}
public void testSave()
{
this.setComplete();//想將資料插入資料庫就保留這個,不想插入資料庫,去掉這句Junit測試會自動回滾。
Admin admin = new Admin();
admin.setName("KamaSupport");
admin.setPassword("123456");
this.adminDAO.save(admin);
}
以Junit形式執行測試程式。大功告成!
附錄A:applicationContext.xml
附錄B:log4j.properties
log4j.rootLogger=INFO,default
log4j.logger.org=ERROR
log4j.logger.com.comp=ERROR
log4j.logger.net.sf.hibernate=ERROR
log4j.logger.net.sf.hibernate.SQL=ERROR
log4j.logger.net.sf.hibernate.type=ERROR
log4j.logger.net.sf.ehcache=ERROR
log4j.logger.org.springframework=ERROR
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:[%p] [%t] %r %l %m%n
log4j.appender.default=org.apache.log4j.RollingFileAppender
log4j.appender.default.Threshold=DEBUG
log4j.appender.default.File=kama.log
log4j.appender.default.Append=true
log4j.appender.default.MaxFileSize=1000KB
log4j.appender.default.MaxBackupIndex=3
log4j.appender.default.layout=org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}:[%p] [%t] %r %l %m%n
2、修改Struts的Action對映:
input="/form/addAdmin.jsp"
name="addAdminForm"
path="/addAdmin"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
path="/form/success.jsp"
redirect="true" />
就是將type改成Spring的代理類了,原來的Action類要到Spring的配置檔案裡頭去配置。
Struts配置檔案修改完畢!
3、在Spring配置檔案中配置path="/addAdmin"對應的bean
class:Struts的ActionBean
property:由Spring產生的DAO,這個屬性要在com.kama.struts.action.AddAdminAction中定義,並且要定義Setter方法。
4、在Action中使用DAO:
4.1:定義DAO屬性:
private AdoInterface dao;
4.2:定義Setter,Getter方法:
public AdoInterface getDao()
{
return dao;
}
public void setDao(AdoInterface dao)
{
this.dao = dao;
}
4.3:呼叫DAO:
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
AddAdminForm addAdminForm = (AddAdminForm) form;
Admin id = new Admin();
id.setName(addAdminForm.getName());
id.setPassword(addAdminForm.getPassword());
dao.save(id);
return mapping.findForward("success");
}
OK,完成了!
注意:部署的時候將spring-web.jar包部署到lib目錄下,不然剛才在Struts配置檔案裡頭增加的那幾個Class找不到會出現莫名的錯誤!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8271432/viewspace-888220/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Struts2+hibernate+spring配置程式整合下載Spring
- 求助於struts+spring+hibernateSpring
- spring struts hibernate 優缺點?Spring
- [摘]Struts+Spring+Hibernate整合Spring
- struts+hibernate 中能結合哪些常用的設計模式設計模式
- struts+spring+hibernate感悟(轉載)Spring
- Struts+Spring+Hibernate練習(完整)Spring
- Spring+Struts+Hibernate 簡介(轉)Spring
- struts和spring結合的問題(線上等~~)Spring
- Struts2,Hibernate,Spring 環境配置Spring
- Struts+spring+Hibernate+Mysql--環境搭建SpringMySql
- struts+spring+hibernate找不到bean....SpringBean
- Spring,hibernate,struts的面試筆試題Spring面試筆試
- Struts1、Struts2、Hibernate、Spring框架工作原理介紹Spring框架
- 如何組合Struts+Spring?Spring
- spring json dwr struts2.0 hibernate整合SpringJSON
- Struts +Spring + Hibernate 的配置問題,謝謝!Spring
- Spring+Hibernate+Struts 如何效能最大化Spring
- struts+hibernate+spring 整合中出現的問題Spring
- Struts2和Spring2結合時報的一個錯Spring
- 框架(Spring、Struts2和Hibernate三者)整合框架Spring
- Struts2+Hibernate+Spring分頁自定義標籤Spring
- Java新手如何學習Spring、Struts、Hibernate三大框架?JavaSpring框架
- SSH框架查詢方法(struts2 Spring 3.1 Hibernate 4.1)框架Spring
- 請閱讀:Struts+Spring+Hibernate――中國軟體的悲哀Spring
- Spring,hibernate,struts常見的面試筆試題彙總Spring面試筆試
- myeclipse使用struts2框架,struts.xml怎麼配置Eclipse框架XML
- SSH(STRUTS2+SPRING+HIBERNATE)實現檔案上傳功能Spring
- 一個有關struts+spring+hibernate專案的問題,Spring
- J2EE(exts struts spring hibernate)系統效能問題Spring
- [摘]struts+spring+hibernate之間的關係與差別(ZT)Spring
- eclipse下開發struts+hibernate出現的問題!Eclipse
- Spring mvc+struts2+Hibernate整合例項程式碼(註解詳解)SpringMVC
- [java web]Idea+maven+spring4+hibernate5+struts2整合過程JavaWebIdeaMavenSpring
- Struts+Hibernate+Spring出現異常錯誤,高手指點,謝謝!Spring
- 深入淺出的理解框架(Struts2、Hibernate、Spring)與 MVC 設計模式框架SpringMVC設計模式
- struts+spring+hibernate搞了一天,總是有Servlet action is not available異常,高手指教一下SpringServletAI
- 《輕量級Java EE企業應用實戰:Struts 2+Spring 3+Hibernate整合開發 第3版》pdf 附下載連結JavaSpring