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

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

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

    隨筆-86  評論-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容器進行管理
          修改struts-config.xml中的action屬性,action的type值不指定具體的實現類,統一修改成代理類

      
      <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值設定與struts-config.xml中action path值相對應,以使代理類DelegatingActionProxy能夠根據傳入的path在springContext中找到相應的bean,并將實例返回給struts.
    <bean name="/loginAction" class="com.derek.action.LoginAction" singleton="false">
      <property name="login">
        <ref bean="loginBOProxy" />
      </property>
    </bean>

    二.spring+hibernate
      
    1.dateSource
          在springContext中設置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中設置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中設置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實現了HibernateTemplate和SessionFactory實例的關聯, HibernateTemplate對Hibernate Session操作進行了封裝,HibernateTemplate.execute方法則是一封裝機制的核心. 借助HibernateTemplate我們可以脫離每次數據操作必須首先獲得Session實例、啟動事務、提交/回滾事務以及煩雜的try/catch/finally的繁瑣操作.
            Spring中的事務管理實際上是基于動態AOP機制實現,為了實現動態AOP,Spring在默認情況下會使用Java DynamicProxy,但是,Dynamic Proxy要求其代理的對象必須實現一個接口,該接口定義了準備進行代理的方法。而對于沒有實現任何接口的Java Class,需要采用其他方式,Spring通過CGLib實現這一功能。


       5.DAOProxy 代理bean
            通過代理,將上面的DAO bean 納入到spring容器的事務管理中,并在其中設置對哪些方法進行事務管理
         <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開頭的方法加入事務管理-->
                         <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加入事務管理,就必須ref他的代理bean,且在LoginAction中該屬性須由其接口強制類型轉換-->
             </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數據源----------------
    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我們可以脫離每次數據操作必須首先
             * 獲得Session實例 、啟動事務、提交/回滾事務以及煩雜的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實例完成業務操作(必須由接口強制類型轉化)
    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實例(必須通過代理類獲得實例且由其接口強制類型轉化)

    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();
        }
    }

          一個Spring application context的定義能夠被很多種不同的上下文實現所讀取, 比如FileSystemXmlApplicationContextClassPathXmlApplicationContext以及XmlWebApplicationContext。 默認的情況下,一個web應用程序會從”WEB-INF/applicationContext.xml”中得到root context。 在所有的Spring應用中,XML文件中定義的application context會把所有相關的application beans連接起來, 包括Hibernate session factory以及數據訪問和業務對象(就像上面定義的那些bean)。 它們中的大部分都不會意識到被Spring容器所管理,甚至在同其他bean合作的時候, 因為它們僅僅遵循JavaBeans的規范。一個bean屬性及可以表示值參數,也可以是其他的合作bean。 下面的bean定義能夠作為Spring web MVC context的一部分,在最基礎的 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 閱讀(6624) 評論(13)  編輯  收藏 所屬分類: Java

    評論:
    # re: Spring+Hibernate+Struts 2006-07-24 21:56 | han
    你好!
    我在調試過程中遇到下面的問題,請指教
      回復  更多評論
      
    # 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)

      回復  更多評論
      
    # 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>

      回復  更多評論
      
    # 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>
      回復  更多評論
      
    # 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>
      回復  更多評論
      
    # 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;
    }

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

    應該是:
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    你試試!  回復  更多評論
      
    # 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 會幫你注入你定義的bean,無須你再自己用WebApplicationContextUtils去獲得bean實例  回復  更多評論
      
    # 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
    是因為TOMCAT少拉Jar包
    靠。
    找拉半天都沒有找到   回復  更多評論
      
    # re: Spring+Hibernate+Struts 2007-03-07 11:50 | kingking
    你好 你能把整個例子打包發給我嗎? 我調試的時候 出現了很多問題
    jinjin@catsic.com
      回復  更多評論
      
    # re: Spring+Hibernate+Struts 2007-03-09 13:32 | 張文弟
    可以整個例子也打個包發給我嗎?我老是調不通

    我的email 是 zhangwendi_java@163.com  回復  更多評論
      
    # 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)
    各位:能幫我說一下這個是什么問題嗎?
    我的datasource:
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
    <value>java:comp/env/jdbc/game</value>
    </property>
    </bean>  回復  更多評論
      
    # re: Spring+Hibernate+Struts 2009-09-03 08:43 | zhaos
    能把整個例子打包也發給我嗎,我試了很久都不行啊。 zhaos@sunward.com.cn  回復  更多評論
      
    MSN:envoydada@hotmail.com QQ:34935442
    主站蜘蛛池模板: 精品国产日韩亚洲一区| 亚洲伦理一区二区| 国产免费一区二区三区在线观看| 色偷偷亚洲第一综合| 亚洲人成电影网站国产精品 | 十八禁视频在线观看免费无码无遮挡骂过| 37pao成人国产永久免费视频| 又粗又硬免费毛片| 久艹视频在线免费观看| 最新国产精品亚洲| 亚洲日韩精品A∨片无码| 国产精品免费网站| 成人福利在线观看免费视频| 内射少妇36P亚洲区| 免费二级毛片免费完整视频| 午夜精品射精入后重之免费观看| 亚洲一区无码中文字幕| AA免费观看的1000部电影| 精品国产日韩亚洲一区在线| 久久精品国产亚洲AV电影| 国产国产人免费视频成69大陆| 亚洲国产成人久久精品软件| 国产成人无码综合亚洲日韩| 青春禁区视频在线观看直播免费 | 久久精品国产亚洲AV无码偷窥| 成人免费777777被爆出| 亚洲最新中文字幕| 亚洲线精品一区二区三区影音先锋| 中文永久免费观看网站| 亚洲精品一卡2卡3卡四卡乱码| 免费被黄网站在观看| 久久久久免费精品国产小说| 黄色a级免费网站| 亚洲午夜久久久精品电影院| 亚洲人成无码网WWW| 免费观看的av毛片的网站| 国产成人yy免费视频| 最新国产乱人伦偷精品免费网站 | 84pao国产成视频免费播放| 一级黄色毛片免费看| 亚洲av日韩av永久无码电影|