Struts+Spring+Hibernate整合注冊登錄
開發環境:
1. MyEclipse Enterprise Workbench 7.0 Milestone-1(MyEclipse 7.0 M1)
2. Spring 2.5
3. Struts 1.3
4. Hibernate 3.2
5. Tomcat6.0
6. MySql 5.0
7. 其他(SVN等)
開發需求:
1. 開發分為簡單的用戶注冊模塊和用戶登錄模塊
其中在用戶注冊模塊中,用戶名是唯一的,也就是說需要對用戶名進行驗證
在用戶登錄模塊中需要對用戶的用戶名和密碼進行驗證,驗證通過,登錄成功
2.
開發步驟:
1. 前期準備:新建數據庫(test:user)

2. 在MyEclipse的DB Browser中新建DataBase Driver。(新建Driver template選擇mysql,具體配置相信大家應該很熟悉了)

3. 新建一個web工程,工程名我定為SSHUser
4. 添加對Struts的支持
在工程上右鍵選擇MyEclipse->add Struts Capabilities,如下圖,(后面對其他的支持就不截圖了,原理一樣)


5. 添加對Spring的支持

注:添加了Spring 2.5 web libraries這個包
6. 添加對Hibernate的支持

注:添加Spring 2.5 Persistence Core Libraries包




7. 把數據庫user映射到web工程中
在DB Browser中選擇user右鍵選擇Hibernate…


8. 新建兩個Action Form:reg 和 login



9. 編寫代碼和配置文件(略,提供源碼壓縮包給大家)
就寫一些程序當中最精彩的部分了
1) 整合SSH后,寫了一個程序,后面發布(tomcat)的話,就會報下面的錯,上網搜了一下解決方案,http://www.cnblogs.com/QQParadise/archive/2009/04/09/1404757.html
說“由于Spring中的“asm-2.2.3.jar”和Hibernate中的“asm.jar”包沖突。解決辦法是移除Spring2.0 AOP Libraries中的“asm-2.2.3.jar”即可”,我看了一下,確實有這兩個包,刪除asm-2.2.3.jar,發布成功。
2009-06-07 09:43:36,134 ERROR [org.springframework.web.context.ContextLoader] - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/reg' defined in file [D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\testd\WEB-INF\classes\applicationContext-actions.xml]: Cannot resolve reference to bean 'userManager' while setting bean property 'um'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userManager' defined in file [D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\testd\WEB-INF\classes\applicationContext-beans.xml]: Cannot resolve reference to bean 'UserDAO' while setting bean property 'dao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserDAO' defined in file [D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\testd\WEB-INF\classes\applicationContext-beans.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\testd\WEB-INF\classes\applicationContext-common.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
……
2) 由于本程序要用到DAO,在用戶管理類中我一開始使用
UserDAO dao = new UserDAO();
public void addUser(User user)
{
dao.save(user);
}
后面一直會報一個空指針異常的錯誤(java.lang.NullPointerException),后來也是在網上找了好久,才發現一個我不小心的地方,就是我已經使用了Spring進行依賴注入,不過上面的語句根本就沒有注入,所以會報空指針異常的錯誤,改為下面的語句,使用Spring進行注入,也就是使用set方法就行注入即可(初學者經常犯的錯誤吧)。
private UserDAO dao;
public void setDao(UserDAO dao)
{
this.dao = dao;
}
public void addUser(User user)
{
dao.save(user);
}
<bean id="userManager" class="com.usc.manager.userManagerImpl">
<property name="dao" ref="UserDAO"/>
</bean>
3) 用Struts生成jsp文件的時候,會出現一個Cancel按鈕,如果不處理的話,單擊會報org.apache.struts.action.InvalidCancelException異常,網上說的話:Cancel按鈕的機制和submit機制是一樣的,沒有處理,如果要解決的話,在Struts配置文件中的每個action里面加上cancellable="true",雖然這樣能夠解決異常,但是治標不治本,此時如果點擊Cancel按鈕會當一個submit按鈕來進行提交,我覺得真有點違背常理,所以我的解決方案就是1.刪除cancel按鈕,2.修改為reset按鈕(我覺得是最好的解決方案)
4) 配置文件
Spring的配置文件
Spring的配置文件主要是對Spring的一些機制進行配置,如:配置sessionFactory、配置sessionFactory、配置事務的傳播特性、配置那些類的哪些方法參與事務、配置action,配置一些bean
Struts的配置文件
主要是修改action中type屬性,設置為spring管理,修改為
type="org.springframework.web.struts.DelegatingActionProxy">
本人也是剛學SSH不久,難免會有一些錯誤的理解,如果有什么建議或者意見的,我們可以一起學習,謝謝 ,請Q我506817493。
木子寫于2009年6月7日
博客中的一些下載已經放到了百度云了,請根據需要下載。【點我去百度云下載】
最后弱弱地說一下,如果可以的話,轉載請提供出處(
),謝謝。
posted on 2010-01-07 21:09
李順利 閱讀(3984)
評論(0) 編輯 收藏