李順利
          隨筆-50  評論-170  文章-0  trackbacks-0

          Struts+Spring+Hibernate整合注冊登錄

           

          開發環境:

          1.       MyEclipse Enterprise Workbench 7.0 Milestone-1MyEclipse 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.       前期準備:新建數據庫(testuser

          clip_image002

           

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

           

          clip_image004

           

          3.       新建一個web工程,工程名我定為SSHUser

          4.       添加對Struts的支持

          在工程上右鍵選擇MyEclipse->add Struts Capabilities,如下圖,(后面對其他的支持就不截圖了,原理一樣)

          clip_image006

           

          clip_image008

           

          5.       添加對Spring的支持

           

          clip_image010

          注:添加了Spring 2.5 web libraries這個包

           

          6.       添加對Hibernate的支持

          clip_image012

          注:添加Spring 2.5 Persistence Core Libraries

          clip_image014clip_image016clip_image018

           

          clip_image020

           

          7.       把數據庫user映射到web工程中

          DB Browser中選擇user右鍵選擇Hibernate…

          clip_image022

           

          clip_image024

           

          8.       新建兩個Action Form:reg login

          clip_image026

          clip_image028

           

          clip_image030

           

          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的配置文件

          主要是修改actiontype屬性,設置為spring管理,修改為

          type="org.springframework.web.struts.DelegatingActionProxy">

           

           

                   本人也是剛學SSH不久,難免會有一些錯誤的理解,如果有什么建議或者意見的,我們可以一起學習,謝謝 ,Q506817493。

           

          木子寫于200967

           



          博客中的一些下載已經放到了百度云了,請根據需要下載。【點我去百度云下載】

          最后弱弱地說一下,如果可以的話,轉載請提供出處( ),謝謝。
          posted on 2010-01-07 21:09 李順利 閱讀(3987) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 奉化市| 鄯善县| 阜城县| 蒲江县| 保定市| 三台县| 本溪| 金沙县| 定南县| 原阳县| 河曲县| 博白县| 淳安县| 桂林市| 水富县| 东乌珠穆沁旗| 那曲县| 寿阳县| 高雄县| 扎鲁特旗| 浑源县| 浙江省| 新乡县| 凤城市| 靖远县| 大厂| 贵港市| 建阳市| 赣榆县| 高清| 梁平县| 凤山县| 科技| 屯门区| 临颍县| 香港 | 巴林右旗| 奉节县| 庆元县| 宁乡县| 永靖县|