隨筆-86  評(píng)論-33  文章-0  trackbacks-0

                   ===============Spring+Hibernate+Struts配置===============
          spring加載log4j
             web.xml

             < context - param >
              
          < param - name > log4jConfigLocation </ param - name >
              
          < param - value >/ WEB - INF / classes / log4j.properties </ param - value >
            
          </ context - param >
            
          < listener >
              
          < listener - class > org.springframework.web.util.Log4jConfigListener </ listener - class >
            
          </ listener >


          一.spring+struts
          1.加載springContext
                通過struts-config.xml中增加plug-in插件來加載springContext
             <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
               <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
             </plug-in>
            
          applicationContext.xml為spring的配置文件

          2.將strutsAction交給Spring容器進(jìn)行管理
                修改struts-config.xml中的action屬性,action的type值不指定具體的實(shí)現(xiàn)類,統(tǒng)一修改成代理類

            
            <action input="/login.jsp"
                   name="loginActionForm"
                   path="/loginAction" 
                   scope="request"   
                   type="org.springframework.web.struts.DelegatingActionProxy"
                   validate="false">
                <forward name="success" path="/success.jsp" />
                <forward name="failure" path="/failure.jsp" />
              </action>

          3.在applicationContext.xml中的bean name值設(shè)定與struts-config.xml中action path值相對(duì)應(yīng),以使代理類DelegatingActionProxy能夠根據(jù)傳入的path在springContext中找到相應(yīng)的bean,并將實(shí)例返回給struts.
          <bean name="/loginAction" class="com.derek.action.LoginAction" singleton="false">
            <property name="login">
              <ref bean="loginBOProxy" />
            </property>
          </bean>

          二.spring+hibernate
            
          1.dateSource
                在springContext中設(shè)置dateSource Bean
               <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                  <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"></property>
                  <property name="url" value="jdbc:jtds:sqlserver://192.168.56.32:1433/testDB"></property>
                  <property name="username" value="it"></property>
                  <property name="password" value="it"></property>
               </bean>
               2.sessionFactory
                 在springContext中設(shè)置sessionFactory Bean
            <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
              <property name="dataSource" ref="dataSource"></property>
              <property name="mappingResources">
                  <list>
                    <value>hbm\OvertimeRecord.hbm.xml</value><!--hbm映射文件-->
                    <value>hbm\OvertimePermit.hbm.xml</value>
                  </list>
              </property>
              <property name="hibernateProperties">
                  <props>
                     <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                     <prop key="hibernate.show_sql">true</prop>
                     <prop key="hibernate.jdbc.fetch_size">50</prop>
                     <prop key="hibernate.jdbc.batch_size">20</prop>
                  </props>
              </property>
            </bean>
           
           
          3.transactionManager
             在springContext中設(shè)置transactionManager Bean
           
            <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
               <property name="sessionFactory">
                 <ref local="sessionFactory" />
               </property>
             </bean>

            
          4.DAO bean
                <bean id="Ilogin" class="com.derek.business.Login">
                    <property name="sessionFactory">
                        <ref local="sessionFactory"/>
                    </property>
                </bean>
                public class Login extends HibernateDaoSupport implements LoginInterface
                DAO 繼承HibernateDaoSupport
                HibernateSupport實(shí)現(xiàn)了HibernateTemplate和SessionFactory實(shí)例的關(guān)聯(lián), HibernateTemplate對(duì)Hibernate Session操作進(jìn)行了封裝,HibernateTemplate.execute方法則是一封裝機(jī)制的核心. 借助HibernateTemplate我們可以脫離每次數(shù)據(jù)操作必須首先獲得Session實(shí)例、啟動(dòng)事務(wù)、提交/回滾事務(wù)以及煩雜的try/catch/finally的繁瑣操作.
                  Spring中的事務(wù)管理實(shí)際上是基于動(dòng)態(tài)AOP機(jī)制實(shí)現(xiàn),為了實(shí)現(xiàn)動(dòng)態(tài)AOP,Spring在默認(rèn)情況下會(huì)使用Java DynamicProxy,但是,Dynamic Proxy要求其代理的對(duì)象必須實(shí)現(xiàn)一個(gè)接口,該接口定義了準(zhǔn)備進(jìn)行代理的方法。而對(duì)于沒有實(shí)現(xiàn)任何接口的Java Class,需要采用其他方式,Spring通過CGLib實(shí)現(xiàn)這一功能。


             5.DAOProxy 代理bean
                  通過代理,將上面的DAO bean 納入到spring容器的事務(wù)管理中,并在其中設(shè)置對(duì)哪些方法進(jìn)行事務(wù)管理
               <bean id="loginBOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
                     <property name="transactionManager">
                          <ref bean="transactionManager" />
                     </property>
                     <property name="target">
                          <ref local="Ilogin" /> <!--所代理的bean-->
                     </property>
                     <property name="transactionAttributes">
                          <props>
                               <prop key="insert*">PROPAGATION_REQUIRED</prop> <!--以insert開頭的方法加入事務(wù)管理-->
                               <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <!--以get開頭的方法只讀-->
                          </props>
                     </property>
                </bean>

              
              6.action bean
                <bean name="/loginAction" class="com.derek.action.LoginAction" singleton="false">
                   <property name="login">
                      <ref bean="loginBOProxy" /> <!--要將其使用的DAO bean加入事務(wù)管理,就必須ref他的代理bean,且在LoginAction中該屬性須由其接口強(qiáng)制類型轉(zhuǎn)換-->
                   </property>
                </bean>

          示例代碼:
            struts-conifg.xml

          <? xml version = " 1.0 "  encoding = " UTF-8 " ?>
          <! DOCTYPE struts - config PUBLIC  " -//Apache Software Foundation//DTD Struts Configuration 1.1//EN "   " http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd " >
          < struts - config >

            
          < form - beans >
              
          < form - bean name = " loginActionForm "  type = " com.derek.form.LoginActionForm "   />
            
          </ form - beans >
            
          < action - mappings >
              
          < action input = " /login.jsp "  name = " loginActionForm "  path = " /loginAction "  scope = " request "  type = " org.springframework.web.struts.DelegatingActionProxy "  validate = " false " >
                
          < forward name = " success "  path = " /success.jsp "   />
                
          < forward name = " failure "  path = " /failure.jsp "   />
              
          </ action >
            
          </ action - mappings >
            
          < plug - in className = " org.springframework.web.struts.ContextLoaderPlugIn " >
              
          < set - property property = " contextConfigLocation "  value = " /WEB-INF/applicationContext.xml "   />
            
          </ plug - in >
          </ struts - config >

            applicationContext.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans SYSTEM "D:\JAVA\MyWork\SpringDemo\SpringWeb\WEB-INF\spring-beans.dtd">
          <!--DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"-->

          <!--
            
          - Root application context for the Countries application.
            
          - Web-specific beans are defined in "countries-servlet.xml".
            
          -->
          <beans>

          <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           
          <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"></property>
           
          <property name="url" value="jdbc:jtds:sqlserver://192.168.56.32:1433/testDB"></property>
           
          <property name="username" value="it"></property>
           
          <property name="password" value="itservice"></property>
          </bean>

          <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
           
          <property name="dataSource" ref="dataSource"></property>
           
          <property name="mappingResources">
            
          <list>
              
          <value>hbm\OvertimeRecord.hbm.xml</value>
              
          <value>hbm\OvertimePermit.hbm.xml</value>
            
          </list>
           
          </property>
           
          <property name="hibernateProperties">
            
          <props>
               
          <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
               
          <prop key="hibernate.show_sql">true</prop>
               
          <prop key="hibernate.jdbc.fetch_size">50</prop>
               
          <prop key="hibernate.jdbc.batch_size">20</prop>
            
          </props>
           
          </property>
          </bean>

          <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
             
          <property name="sessionFactory">
                 
          <ref local="sessionFactory" />
             
          </property>
          </bean>


          <!---------------使用JNDI數(shù)據(jù)源----------------
          bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
          <property name="jndiName">
            <value>jdbc/cqccms</value>
          </property>
          <property name="jndiEnvironment">
               <props>
                  <prop key="java.naming.factory.initial">
                    weblogic.jndi.WLInitialContextFactory
                  </prop>
                  <prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop>
                  <prop key="java.naming.security.principal">weblogic</prop>
                  <prop key="java.naming.security.credentials">weblogic</prop>
               </props>   
             </property> 
          </bean>

          <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate" singleton="true"
            lazy-init="default" autowire="default" dependency-check="default">
            <property name="environment">
               <props>
                  <prop key="java.naming.factory.initial">
                    weblogic.jndi.WLInitialContextFactory
                  </prop>
                  <prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop>
                  <prop key="java.naming.security.principal">weblogic</prop>
                  <prop key="java.naming.security.credentials">weblogic</prop>
               </props>   
             </property>
          </bean>

          <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" singleton="true"
            lazy-init="default" autowire="default" dependency-check="default">
            <property name="jndiTemplate">
             <ref local="jndiTemplate" />
            </property>
            <property name="userTransactionName">
             <value>weblogic/transaction/UserTransaction</value>
            </property>
          </bean>

          --------------------------------->



          <bean id="RecordDao" class="com.derek.business.RecordDao">
            
          <property name="sessionFactory">
              
          <ref local="sessionFactory"/>
            
          </property>
          </bean>

          <bean id="RecordDaoProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            
          <property name="transactionManager">
              
          <ref bean="transactionManager" />
            
          </property>
            
          <property name="target">
              
          <ref local="RecordDao" />
            
          </property>
            
          <property name="transactionAttributes">
              
          <props>
                
          <prop key="insert*">PROPAGATION_REQUIRED</prop>
                
          <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
              
          </props>
            
          </property>
          </bean>

          <bean id="Ilogin" class="com.derek.business.Login">
            
          <property name="sessionFactory">
              
          <ref local="sessionFactory"/>
            
          </property>
          </bean>

          <bean id="loginBOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            
          <property name="transactionManager">
              
          <ref bean="transactionManager" />
            
          </property>
            
          <property name="target">
              
          <ref local="Ilogin" />
            
          </property>
            
          <property name="transactionAttributes">
              
          <props>
                
          <prop key="insert*">PROPAGATION_REQUIRED</prop>
                
          <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
              
          </props>
            
          </property>
          </bean>

          <bean name="/loginAction" class="com.derek.action.LoginAction" singleton="false">
            
          <property name="login">
              
          <ref bean="loginBOProxy" />
            
          </property>
          </bean>
          </beans>

          LoginInterface
          package com.derek.myinterface;

          public interface LoginInterface {
              
          public boolean check(String name,String pwd);
          }

          Login
          package com.derek.business;

          import com.derek.myinterface.LoginInterface;
          import org.hibernate.SessionFactory;
          import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
          import java.util.List;

          public class Login extends HibernateDaoSupport implements LoginInterface{
              
          private SessionFactory sessionFactory;
              
          private String hsql = "from OvertimePermit where account=? and password=?";
              
          public Login() {}
              
          public boolean check(String name,String pwd){
                  String condition[] 
          = {name, pwd};//查詢條件
                  /**
                   * 借助HibernateTemplate我們可以脫離每次數(shù)據(jù)操作必須首先
                   * 獲得Session實(shí)例 、啟動(dòng)事務(wù)、提交/回滾事務(wù)以及煩雜的try/catch/finally的繁瑣操作
                   
          */       
                  List l 
          = this.getHibernateTemplate().find(hsql, condition);
                  
                  
          if (l.size() > 0return true;
                    
          else return false;
              }
          }

          RecordDaoInterface
          package com.derek.myinterface;

          import java.util.List;
          import hbm.OvertimeRecord;

          public interface IRecordDao {
              
          public List findAll(String hsql);
              
          public void insert(OvertimeRecord or);
          }

          RecordDao
          package com.derek.business;

          import com.derek.myinterface.IRecordDao;
          import java.util.List;
          import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
          import org.hibernate.SessionFactory;
          import hbm.OvertimeRecord;

          public class RecordDao extends HibernateDaoSupport implements IRecordDao{
              
          private SessionFactory sessionFactory;
              
          public RecordDao() {
              }

              
          public List findAll(String hsql) {
                 
          return this.getHibernateTemplate().find(hsql);
              }

              
          public void insert(OvertimeRecord or) {
                  
          this.getHibernateTemplate().saveOrUpdate(or);
              }
          }

          LoginAction通過容器注入的Login實(shí)例完成業(yè)務(wù)操作(必須由接口強(qiáng)制類型轉(zhuǎn)化)
          package com.derek.action;

          import javax.servlet.http.*;
          import com.derek.form.*;
          import org.apache.struts.action.*;
          import org.apache.log4j.Logger;
          import com.derek.myinterface.LoginInterface;

          public class LoginAction extends Action {
              
          private LoginInterface login;
              
          public ActionForward execute(ActionMapping actionMapping,
                                           ActionForm actionForm,
                                           HttpServletRequest servletRequest,
                                           HttpServletResponse servletResponse) {
                  Logger log 
          = Logger.getLogger(this.getClass().getName());
                  LoginActionForm loginActionForm 
          = (LoginActionForm) actionForm;
                  String name 
          = loginActionForm.getName();
                  String pwd 
          = loginActionForm.getPwd();
                  
          boolean TF = login.check(name,pwd);
                  
          if(TF){ log.warn("LoginSuccess------------");;return actionMapping.findForward("success");}
                    
          else{ log.warn("LoginFailure------------");;return actionMapping.findForward("failure");}
              }
              
          public void setLogin(LoginInterface Ilogin) {this.login = Ilogin;}
              
          public LoginInterface getLogin() {return login;}
          }

          類中直接通過Context獲得bean實(shí)例(必須通過代理類獲得實(shí)例且由其接口強(qiáng)制類型轉(zhuǎn)化)

          package com.derek.pub;

          import org.springframework.context.ApplicationContext;
          import org.springframework.context.support.FileSystemXmlApplicationContext;
          import com.derek.myinterface.IRecordDao;
          import java.util.List;
          import hbm.OvertimeRecord;

          public class Untitled1 {
              
          public Untitled1() {
              ApplicationContext ctx 
          = new FileSystemXmlApplicationContext("applicationContext.xml");
              IRecordDao recordDao 
          = (IRecordDao)ctx.getBean("RecordDaoProxy");
              OvertimeRecord newor 
          = new OvertimeRecord("004104","dada","100120","it","2006/04/02","2006/04/02","001145","david","001145","david","00","00","1","1","1","1");
              newor.setMark(
          "0");
              recordDao.insert(newor);
              List l 
          = recordDao.findAll("from OvertimeRecord");
              
          for(int i=0;i<l.size();i++){
              OvertimeRecord or 
          = (OvertimeRecord)l.get(i);
              System.out.println(or.getId());
              }
              }
              
          public static void main(String[] a){
              Untitled1 u 
          = new Untitled1();
              }
          }

                一個(gè)Spring application context的定義能夠被很多種不同的上下文實(shí)現(xiàn)所讀取, 比如FileSystemXmlApplicationContextClassPathXmlApplicationContext以及XmlWebApplicationContext。 默認(rèn)的情況下,一個(gè)web應(yīng)用程序會(huì)從”WEB-INF/applicationContext.xml”中得到root context。 在所有的Spring應(yīng)用中,XML文件中定義的application context會(huì)把所有相關(guān)的application beans連接起來, 包括Hibernate session factory以及數(shù)據(jù)訪問和業(yè)務(wù)對(duì)象(就像上面定義的那些bean)。 它們中的大部分都不會(huì)意識(shí)到被Spring容器所管理,甚至在同其他bean合作的時(shí)候, 因?yàn)樗鼈儍H僅遵循JavaBeans的規(guī)范。一個(gè)bean屬性及可以表示值參數(shù),也可以是其他的合作bean。 下面的bean定義能夠作為Spring web MVC context的一部分,在最基礎(chǔ)的 application context中訪問business beans。

          ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
          ProductService productService 
          = (ProductService) context.getBean("myProductService");
          ApplicationContext context 
          =
              
          new FileSystemXmlApplicationContext("C:/myContext.xml");
          ProductService productService 
          =
              (ProductService) context.getBean(
          "myProductService");
          ApplicationContext context 
          =
              
          new ClassPathXmlApplicationContext("myContext.xml");
          ProductService productService 
          =
              (ProductService) context.getBean(
          "myProductService");
          posted on 2006-05-10 14:22 Derek.Guo 閱讀(6625) 評(píng)論(13)  編輯  收藏 所屬分類: Java

          評(píng)論:
          # re: Spring+Hibernate+Struts 2006-07-24 21:56 | han
          你好!
          我在調(diào)試過程中遇到下面的問題,請(qǐng)指教
            回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2006-07-24 21:57 | han
          org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/appcontext.xml]: Initialization of bean failed; nested exception is net.sf.hibernate.MappingException: org.dom4j.DocumentException: null Nested exception: null
          org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:403)
          org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
          org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
          org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:277)
          org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
          org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
          org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)
          org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
          org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:83)
          javax.servlet.GenericServlet.init(GenericServlet.java:211)
          org.apache.catalina.startup.Catalina.start(Catalina.java:556)
          sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          java.lang.reflect.Method.invoke(Method.java:324)
          org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
          org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)

            回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2006-07-24 22:01 | han
          web.xml


          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
          <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/appcontext.xml</param-value>
          </context-param>
          <context-param>
          <param-name>log4jConfigLocation</param-name>
          <param-value>/WEB-INF/log4j.properties</param-value>
          </context-param>

          <servlet>
          <servlet-name>SpringContextServlet</servlet-name>
          <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
          <load-on-startup>1</load-on-startup>
          </servlet>
          <servlet>
          <servlet-name>action</servlet-name>
          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
          <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
          </init-param>
          <init-param>
          <param-name>debug</param-name>
          <param-value>3</param-value>
          </init-param>
          <init-param>
          <param-name>detail</param-name>
          <param-value>3</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
          </servlet>
          <servlet-mapping>
          <servlet-name>action</servlet-name>
          <url-pattern>*.do</url-pattern>
          </servlet-mapping>

          </web-app>

            回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2006-07-24 22:01 | han

          appcontext.xml


          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
          "http://www.springframework.org/dtd/spring-beans.dtd">
          <beans>
          <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
          <property name="driverClassName">
          <value>com.mysql.jdbc.Driver</value>
          </property>
          <property name="url">
          <value>jdbc:mysql://localhost:3306/test</value>
          </property>
          <property name="username">
          <value>root</value>
          </property>
          <property name="password">
          <value>1</value>
          </property>
          </bean>
          <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
          <property name="dataSource">
          <ref local="dataSource"/>
          </property>
          <property name="mappingResources">
          <list>
          <value>person/Info.hbm.xml</value>

          </list>
          </property>
          <property name="hibernateProperties">
          <props>
          <prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>
          <prop key="hibernate.show_sql">true</prop>
          </props>
          </property>
          </bean>

          <bean id="myTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
          <property name="sessionFactory">
          <ref local="sessionFactory"/>
          </property>
          </bean>
          <bean id="personService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
          <property name="transactionManager">
          <ref local="myTransactionManager"/>
          </property>
          <property name="target">
          <ref local="personServiceImp"/>
          </property>
          <property name="transactionAttributes">
          <props>
          <prop key="get*">PROPAGATION_REQUIRED</prop>
          <prop key="save*">PROPAGATION_REQUIRED</prop>
          <prop key="update">PROPAGATION_REQUIRED</prop>
          <prop key="delete">PROPAGATION_REQUIRED</prop>
          </props>
          </property>
          </bean>



          <bean id="personDao" class="org.springframework.aop.framework.ProxyFactoryBean">
          <property name="proxyInterfaces">
          <value>person.PersonDao</value>
          </property>
          <property name="interceptorNames">
          <list>
          <value>hibernateInterceptor</value>
          <value>personDaoTarget</value>
          </list>
          </property>
          </bean>

          <bean id="hibernateInterceptor" class="org.springframework.orm.hibernate.HibernateInterceptor">
          <property name="sessionFactory">
          <ref bean="sessionFactory"/>
          </property>
          </bean>



          <bean id="personServiceImp" class="person.PersonServiceImp">
          <property name="person">
          <ref local="personDao"/>
          </property>
          </bean>
          <bean id="personDaoTarget" class="person.PersonDaoImp">
          <property name="sessionFactory">
          <ref local="sessionFactory"/>
          </property>
          </bean>

          </beans>
            回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2006-07-24 22:03 | han
          Info.hbm.xml

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC
          "-//Hibernate/Hibernate Mapping DTD//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

          <hibernate-mapping package="person">
          <class
          name="Person"
          table="info"
          >
          <meta attribute="sync-DAO">false</meta>
          <id
          name="Id"
          type="string"
          column="name"
          >
          <generator class="sequence"/>
          </id>



          </class>
          </hibernate-mapping>

          hibernate.cfg.xml:


          <hibernate-configuration>
          <session-factory name="mySessionFacory">
          <!-- local connection properties -->
          <property name="hibernate.connection.url">
          jdbc:mysql://localhost:3306/test
          </property>
          <property name="hibernate.connection.driver_class">
          com.mysql.jdbc.Driver
          </property>
          <property name="hibernate.connection.username">root</property>
          <property name="hibernate.connection.password">1</property>
          <!-- property name="hibernate.connection.pool_size"></property -->
          <!-- dialect for MySQL -->
          <property name="dialect">
          org.hibernate.dialect.MySQLDialect
          </property>
          <property name="hibernate.show_sql">true</property>
          <property name="hibernate.transaction.factory_class">
          org.hibernate.transaction.HibernateTransactionFactory
          </property>
          <mapping resource="person/Info.hbm.xml" />
          </session-factory>
          </hibernate-configuration>
            回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2006-07-24 22:05 | han
          package person.action;

          import javax.servlet.ServletContext;
          import org.apache.struts.action.Action;
          import org.apache.struts.action.ActionServlet;
          import org.springframework.web.context.WebApplicationContext;
          import org.springframework.web.context.support.WebApplicationContextUtils;

          import person.PersonService;
          public class BaseAction extends Action {


          private PersonService personService;

          public void setServlet(ActionServlet actionServlet) {

          super.setServlet(actionServlet);
          ServletContext servletContext = actionServlet.getServletContext();
          WebApplicationContext wac = null;
          wac=WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
          this.personService = (PersonService) wac.getBean("personServiceImp");
          }
          protected PersonService getPersonService() {
          return this.personService;
          }

          }
          當(dāng)我調(diào)試時(shí),在wac=WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); 處出現(xiàn)異常,我想知道為什么會(huì)這樣,應(yīng)該怎樣解決,請(qǐng)高手指教,謝謝!  回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2006-07-25 09:15 | Derek.G
          你用的是hibernate3.0吧! 但你的spring配置文件中不是
          <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

          應(yīng)該是:
          <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          你試試!  回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2006-07-25 09:22 | Derek.G
          在spring配置文件中配置一下action 如:
          <bean name="/loginAction" class="com.derek.action.LoginAction" singleton="false">
          <property name="login">
          <ref bean="loginBOProxy" />
          </property>
          </bean>

          和在struts-config配置文件中聲明loginAction的
          type = "org.springframework.web.struts.DelegatingActionProxy "

          那么在action中有set,get方法, spring 會(huì)幫你注入你定義的bean,無須你再自己用WebApplicationContextUtils去獲得bean實(shí)例  回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2006-10-20 17:33 | 王 均
          Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
          是因?yàn)門OMCAT少拉Jar包
          靠。
          找拉半天都沒有找到   回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2007-03-07 11:50 | kingking
          你好 你能把整個(gè)例子打包發(fā)給我嗎? 我調(diào)試的時(shí)候 出現(xiàn)了很多問題
          jinjin@catsic.com
            回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2007-03-09 13:32 | 張文弟
          可以整個(gè)例子也打個(gè)包發(fā)給我嗎?我老是調(diào)不通

          我的email 是 zhangwendi_java@163.com  回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2007-05-19 11:51 | leaderbird
          11:16:02,156 ERROR [ContextLoader] Context initialization failed
          org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/spring-context/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: jdbc not bound
          Caused by:
          javax.naming.NameNotFoundException: jdbc not bound
          at org.jnp.server.NamingServer.getBinding(NamingServer.java:491)
          at org.jnp.server.NamingServer.getBinding(NamingServer.java:499)
          at org.jnp.server.NamingServer.getObject(NamingServer.java:505)
          各位:能幫我說一下這個(gè)是什么問題嗎?
          我的datasource:
          <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
          <property name="jndiName">
          <value>java:comp/env/jdbc/game</value>
          </property>
          </bean>  回復(fù)  更多評(píng)論
            
          # re: Spring+Hibernate+Struts 2009-09-03 08:43 | zhaos
          能把整個(gè)例子打包也發(fā)給我嗎,我試了很久都不行啊。 zhaos@sunward.com.cn  回復(fù)  更多評(píng)論
            
          MSN:envoydada@hotmail.com QQ:34935442
          主站蜘蛛池模板: 民权县| 宁津县| 剑阁县| 潼关县| 莱西市| 博白县| 铜梁县| 缙云县| 无为县| 开江县| 那曲县| 常德市| 长沙县| 额尔古纳市| 聂荣县| 昆山市| 柯坪县| 万载县| 文化| 临武县| 澎湖县| 乐昌市| 府谷县| 盐山县| 安义县| 吴忠市| 务川| 涞源县| 巍山| 乳源| 墨竹工卡县| 无极县| 依安县| 泰宁县| 大余县| 焉耆| 中西区| 康定县| 潢川县| 望都县| 福贡县|