<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 青青青国产在线观看免费网站 | 免费A级毛片无码专区| 成人伊人亚洲人综合网站222| 亚洲中文字幕久久久一区| 4hu四虎最新免费地址| 91亚洲国产成人久久精品网址| 小日子的在线观看免费| 亚洲五月六月丁香激情| 99精品在线免费观看| 亚洲高清中文字幕| www.黄色免费网站| 亚洲男同gay片| 国产18禁黄网站免费观看| 一区二区三区免费在线视频| 久久精品国产精品亚洲人人| 国产无限免费观看黄网站| 亚洲精品国产品国语在线| 四虎影视无码永久免费| 亚洲精品高清国产一久久| 国产91免费视频| www亚洲精品久久久乳| 国产成人99久久亚洲综合精品| a毛片在线看片免费| 91午夜精品亚洲一区二区三区| 免费观看的毛片手机视频| 免费无码又爽又黄又刺激网站| 亚洲色婷婷六月亚洲婷婷6月| 99国产精品免费视频观看| 亚洲精品一二三区| 亚洲精品老司机在线观看| 久久精品中文字幕免费| 亚洲欧美第一成人网站7777| 亚洲真人日本在线| 色老头永久免费网站| 特级毛片全部免费播放a一级| 亚洲国产a∨无码中文777| 最近中文字幕无吗免费高清| 亚州**色毛片免费观看| 亚洲精品欧洲精品| 亚洲精品无码永久在线观看| 69影院毛片免费观看视频在线|