<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    176142998

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks
    Struts+Spring+Hibernate
      本次配置環境:Myeclipse5.5、MySQL5.0、Struts1.2、Spring2.0、Hibernate3.1
      一、建工程
      略。。。。。。
      二、要使用Struts、Spring、Hibernate必須導入必需的包
      1、Struts(和之前沒區別)
      2、Spring
         分別導入Spring 2.0 Core Libraries、Spring 2.0 Web Libraries
         選擇把*.jar Copy到工程/WebRoot/WEB-INF/lib下; 點擊NEXT
         選擇applicationContext.xml的目錄,/WebRoot/WEB-INF;點擊finish
      3、Hibernate
         在導入Hibernate時,當然先要配置DataSource咯,這里就不再說了
         選擇導入Hibernate全選上
         選上復選框:Hibernate 3.1 Core......、Hibernate 3.1 Advanced......、Spring 2.0 ORM/DAO.......
         同樣選擇把*.jar Copy到工程/WebRoot/WEB-INF/lib下; 點擊NEXT
         這里我們選擇把hibernate交給spring去管理
      選中單選按鈕 Spring configuration file...... 點擊NEXT
         選擇已存在的applicationContext.xml文件,
         填寫SessionFactory ID :sessionFactory 點擊NEXT
         這里我們需要填寫Bean Id :dataSource
         選擇 DB Driver :選擇剛才配置的DataSource 點擊NEXT
         這里不需要創建 SessionFactory Class 點擊Finish
         注意:查看applicationContext.xml的變化
      三、映射VO、數據操作
      首先工程的結構建好,比較簡單的結構:
      org.chenwj.dao
      org.chenwj.struts
      org.chenwj.struts.action
      org.chenwj.struts.form
      org.chenwj.vo
      映射表userinfo創建持久類到org.chenwj.vo目錄
      在dao下創建數據庫操作類 UserDAO 這里只是對數據庫進去插入,代碼如下:
      private SessionFactory sessionFactory;

          public SessionFactory getSessionFactory() ...{
             return sessionFactory;
          }
          public void setSessionFactory(SessionFactory sessionFactory) ...{
             this.sessionFactory = sessionFactory;
          }
          /**//* 用戶注冊 */
          public boolean regist(Userinfo user) ...{
             try ...{
                 Session session = sessionFactory.openSession();
                 Transaction tx = session.beginTransaction();
                 session.save(user);
                 tx.commit();
                 session.close();
                 return true;
             } catch (Exception ex) ...{
                 ex.printStackTrace();
                 return false;
                    }
             }
          使用依賴注入,setter設值 sessionFactory
          到此數據層已經完成

      四、配置struts-config.xml
          添加action、form、jsp 略……
          首先在struts-config.xml添加一個插件
          <plug-in
          className="org.springframework.web.struts.ContextLoaderPlugIn">
             <set-property property="contextConfigLocation"
                 value="/WEB-INF/applicationContext.xml" />
          </plug-in>
          為什么要添回這個插件呢?
          因為在后面會在applicationContext.xml下配置action,讓action交給spring
          去管理,實現了struts的依賴注入機制
          接下來添加cuntroller,這里你可以使用DelegatingActionProxy代理
          <controller processorClass=
          "org.springframework.web.struts.DelegatingRequestProcessor"/>
          Controller取代了struts的RequestProcessor,在定義action里,我們可以省略
      type屬性。(我個人比較喜歡用這個)下面讓我們看配置好的struts-config.xml:
      <struts-config>
              <data-sources />
              <form-beans>
                 <form-bean name="userForm"
                 type="org.chenwj.struts.form.UserForm" />
              </form-beans>
          <global-exceptions />
          <global-forwards />
          <action-mappings>
             <action attribute="userForm" input="/index.jsp" name="userForm"
                 path="/user" scope="request">
                 <forward name="success" path="/success.jsp" />
                 <forward name="error" path="/index.jsp" />
             </action><!--type屬性可不寫-->
          </action-mappings>

          <controller processorClass=
      "org.springframework.web.struts.DelegatingRequestProcessor"/>

           <message-resources
             parameter="org.chenwj.struts.ApplicationResources" />
           <plug-in
          className="org.springframework.web.struts.ContextLoaderPlugIn">
             <set-property property="contextConfigLocation"
                 value="/WEB-INF/applicationContext.xml" />
           </plug-in>
      </struts-config>

    五、在applicationContext.xml配置action
          這里我們先在 action類里添加一些業務邏輯,代碼如下:
          public class UserAction extends Action ...{

     

          private UserDAO userDao;
          private Userinfo user;

          public ActionForward execute(ActionMapping mapping, ActionForm form,
             HttpServletRequest request, HttpServletResponse response) ...{
         UserForm userForm = (UserForm) form;
         //封裝數據
         user.setName(userForm.getName());
             user.setPassword(userForm.getPassword());
             if(userDao.regist(user))...{
                 return mapping.findForward("success");
             }
             return mapping.findForward("error");
          }

          public Userinfo getUser() ...{
             return user;
          }
          public void setUser(Userinfo user) ...{
             this.user = user;
          }
          public UserDAO getUserDao() ...{
             return userDao;
          }
          public void setUserDao(UserDAO userDao) ...{
             this.userDao = userDao;
          }}
          這里使用setter實現依賴注入了兩個bean,接下來配置applicationContext.xml
          <beans xmlns="略……">
          <!—- 數據源 -->
          <bean id="dataSource"
             class="org.apache.commons.dbcp.BasicDataSource">
             <property name="driverClassName"
                 value="com.mysql.jdbc.Driver">
             </property>
              <property name="url"
      value="jdbc:mysql://localhost:3306/demo"></property>
             <property name="username" value="root"></property>
             <property name="password" value="root"></property>
          </bean>
          <!--  sessionFactory -->
          <bean id="sessionFactory" class=
      "org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="dataSource">
                 <ref bean="dataSource" />
             </property>
             <property name="hibernateProperties">
                 <props>
                    <prop key="hibernate.dialect">
                        org.hibernate.dialect.MySQLDialect
                    </prop>
                 </props>
             </property>
             <property name="mappingResources">
                 <list>
                    <value>org/chenwj/vo/Userinfo.hbm.xml</value>
                 </list>
             </property>
          </bean>
          <!--  數據庫操作類  -->
          <bean id="userDao" class="org.chenwj.dao.UserDAO">
             <property name="sessionFactory">
                 <ref local="sessionFactory" />
             </property>
          </bean>
          <!--  action需要注意:這里是name屬性不是ID,同時要和struts-config.xml
            對應的 action path屬性值相同,斜線也是必需的,通過這個屬性scope=
            "prototype" 每次獲取bean實例時都會產生新的實例,默認是單例-->
          <bean name="/user" class="org.chenwj.struts.action.UserAction"
             abstract="false" lazy-init="default" autowire="default"
             scope="prototype" dependency-check="default">
             <property name="userDao" ref="userDao" />
             <property name="user" ref="user" />
          </bean>
          <bean id="user" class="org.chenwj.vo.Userinfo" abstract="false"
             lazy-init="default" autowire="default"
               dependency-check="default">
          </bean>
      </beans>
          到此所有的配置已經完成,測試:
          HTTP Status 404 - Servlet action is not available
      The requested resource (Servlet action is not available) is not available
      這個錯誤是大部初學者整合 SSH 時都會遇到的問題

          首先建議你使用測試類進行測試,這樣我們可以很快找到錯誤所在的地方
      public static void main(String[] args) ...{
          ApplicationContext context = new FileSystemXmlApplicationContext(
                    "/WebRoot/WEB-INF/applicationContext.xml");
              UserDAO dao = (UserDAO)context.getBean("userDao");
             Userinfo user = new Userinfo();
             user.setName("aaa");
             user.setPassword("bbb");
             boolean a = dao.regist(user);
             if(a)...{
                 System.out.println("OK");
             }
         }
      如果這里沒出錯,那么請你好好檢查你的配置文件,是否寫錯或少了些什么東東了
          這里出的錯誤也跟使用的版本有關系,這里報的錯一般都是說找不到XX類所報的異常
      那么請檢查lib下有沒commons-pool-1.2.jar包,如沒請導入,這個問題也有可能是包
      之間的****,刪除這個包hibernate-annotations.jar

      六、.sql文件、.jsp文件
      create table userinfo(
             id int(10) not null auto_increment,
     name varchar(20),
     password varchar(20),
     PRIMARY KEY  (id))
         <body>
            <html:form action="/user">
                name : <html:text property="name"/><br/>
                password : <html:password property="password"/><br/>
                <html:submit/><html:cancel/>
            </html:form>
         </body>

    posted on 2008-06-12 15:56 飛飛 閱讀(559) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲色大成网站www尤物| 光棍天堂免费手机观看在线观看| 亚洲一级免费毛片| 亚洲制服中文字幕第一区| 免费黄网站在线看| 香蕉视频在线观看亚洲| 最近免费mv在线电影| 久久精品国产亚洲AV香蕉| 四虎影视成人永久免费观看视频| 久久久久久亚洲av成人无码国产| 国产午夜无码精品免费看| 久久噜噜噜久久亚洲va久| 亚洲人成免费电影| 亚洲欧美日韩国产精品一区| 精品久久久久久久免费人妻 | 久久精品成人免费看| 久久精品国产精品亚洲色婷婷| 亚洲日韩精品国产一区二区三区| 成人性生交大片免费看午夜a| 在线观看亚洲网站| 88av免费观看| 亚洲中文字幕久久精品无码VA| 日日夜夜精品免费视频| 永久免费观看黄网站| 久久综合日韩亚洲精品色| 免费视频专区一国产盗摄| 亚洲五月激情综合图片区| 亚洲高清中文字幕免费| 羞羞漫画页面免费入口欢迎你| 天堂在线免费观看中文版| 一边摸一边爽一边叫床免费视频 | 日韩免费在线中文字幕| 亚洲精品国产品国语在线| 久久国产免费福利永久| 国产亚洲蜜芽精品久久| 亚洲国产精品一区二区第一页| 欧美日韩国产免费一区二区三区| 一级美国片免费看| 亚洲不卡中文字幕| 在线日韩日本国产亚洲| 国色精品卡一卡2卡3卡4卡免费|