webwork2+spring+hibernate入門完全配置指南(2)(原創)

來源:互聯網
上載者:User

然後是 spring的配置了,請在web-lib/下建立applicationContext.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.springframework.jdbc.datasource.DriverManagerDataSource"
   destroy-method="close">
   <property name="driverClassName">
    <value>org.gjt.mm.mysql.Driver</value>
   </property>
   <property name="url">
    <value>jdbc:mysql://localhost/mystructs</value>
   </property>
   <property name="username">
    <value>chenzhi</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>com/cz/struct/SysTable.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="transactionManager"
   class="org.springframework.orm.hibernate.HibernateTransactionManager">
   <property name="sessionFactory">
    <ref local="sessionFactory" />
   </property>
  </bean>
  <bean id="systableDAO" class="com.cz.struct.SysTableDAOImp">
   <property name="sessionFactory">
    <ref local="sessionFactory" />
   </property>
  </bean>
  <bean id="systableDAOProxy"
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
    <ref bean="transactionManager" />
   </property>
   <property name="target">
    <ref local="systableDAO" />
   </property>
   <property name="transactionAttributes">
    <props>
      <prop key="insert*">PROPAGATION_REQUIRED</prop>
      <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
      <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
   </property>
  </bean>
</beans>
在這個設定檔裡面,我們設定了datasource/sessionfactory以及spring的動態代理,還有hibernate所需要的XML對應檔路徑
然後是配置xwork.xml
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
 <include file="webwork-default.xml" />
  <package name="default" extends="webwork-default"
   externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver">
  <interceptors>
  <interceptor name="reference-resolver"
  class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor" />
  <interceptor-stack name="vxStack">
  <interceptor-ref name="params" />
  <interceptor-ref name="model-driven" />
  <interceptor-ref name="reference-resolver" />
  </interceptor-stack>
  </interceptors>
<action name="Test" class="com.cz.struct.TestAction">
 <external-ref name="systableDAO">systableDAOProxy</external-ref>
 <result name="success" type="dispatcher">
 <param name="location">/index.jsp</param>
 </result>

 <interceptor-ref name="vxStack" />
</action>
</package>
</xwork>
在配置action的external-ref的時候我遇到了一個不大不小的玩笑,一般編輯XML的時候我都是在editplus裡面編輯的
,最開始我寫成
<external-ref name="systableDAO">
 systableDAOProxy
</external-ref>
結果系統提示找不到叫systableDAOProxy這個名字的bean,結果一查,發現旁邊不能加上空格和tab,哎。。肯定是返回串的時候沒加trim
的後果
好了,最後是我們的TestAction.java
package com.cz.struct;
import com.opensymphony.xwork.*;
import com.opensymphony.webwork.*;
import java.util.*;
/**
 * @author tijichen
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class TestAction extends ActionSupport
{
 private SystableDAO systabledao;
 
 String testname=null;
 public void setSystableDAO(SystableDAO dao)
 {
  this.systabledao=dao;
 }
 public SystableDAO getSystableDAO()
 {return this.systabledao;}
    public String execute() throws Exception {
     testname="executeing";
     SystablePK pk=new SystablePK();
     Systable newdata=new Systable();
     pk.setFieldName("test");
     pk.setTableName("test3");
     newdata.setComp_id(pk);
     newdata.setChineseName("tets");

     systabledao.insert(newdata);
        return Action.SUCCESS;
    }
 
}
ok,編譯打包,然後在瀏覽器地址欄中輸入http://localhost:8080/你的發布目錄/Test.action
看看,是不是資料庫裡面多出了一條資料了?
至於其他,比如從頁面提交的值插入資料庫等等,這裡都不多說了,webwork內建的sample就是最好的參考資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.