Spring 1.1.3 anchor.png Edit

  • 必要なソフト
    • Tapestry 3.0.1
    • Hibernate 2.1.7c
Page Top

Tapestry + Spring + Hibernate anchor.png Edit

  • ライブラリのインストール

以下のサイトよりダウンロード
http://www.springframework.org/

# cd /usr/local/arch
# wget http://voxel.dl.sourceforge.net/.../spring-framework-1.1.3-with-dependencies.zip
# cd ../src
# jar xvf ../arch/spring-framework-1.1.3-with-dependencies.zip
# cd spring-framework-1.1.3/dist
# cp /home/test/WEB-INF/lib
# cd ../lib/aopalliance
# cp aopalliance.jar /home/test/WEB-INF/lib
  • 各種設定
# cd /home/test/WEB-INF
# vi web.xml

<web-app>ディレクティブに追加

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      /WEB-INF/applicationContext.xml
    </param-value>
  </context-param>
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
# vi applicationContext.xml
<?xml version="1.0"?>
<!DOCTYPE beans PUBLIC
    "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
  <bean id="messageSource" class=
   "org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename"><value>messages</value></property>
  </bean>
  <bean id="sessionFactory" class=
   "org.springframework.orm.hibernate.LocalSessionFactoryBean">
    <property name="configLocation"><value>
      /WEB-INF/classes/hibernate.cfg.xml
    </value></property>
  </bean>
  <bean id="transactionManager" class=
   "org.springframework.orm.hibernate.HibernateTransactionManager">
    <property name="sessionFactory">
      <ref local="sessionFactory"/>
    </property>
  </bean>
  <bean id="testServiceTarget" class="com.domain.test.TestServiceImpl">
    <property name="testDataDao"><ref local="testDataDao"/></property>
  </bean>
  <bean id="testService" class=
   "org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager"><ref local="transactionManager"/></property>
    <property name="target"><ref local="testServiceTarget"/></property>
    <property name="transactionAttributes">
      <props>
        <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
        <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
        <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
        <prop key="store*">PROPAGATION_REQUIRED</prop>
      </props>
    </property>
  </bean>
  <bean id="testDataDao" class="com.domain.dao.TestDataDaoImpl">
    <property name="sessionFactory"><ref local="sessionFactory"/></property>
  </bean>
</beans>
  • サンプルDAOの作成
# cd /home/test/src/com/domain/dao
# vi TestDataDaoImpl.java
package com.domain.dao;
import java.util.List;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import com.domain.dao.TestDataDao;
import com.domain.pojo.TestData;
public class TestDataDaoImpl extends HibernateDaoSupport implements TestDataDao{
  public TestDataDaoImpl(){}
  public TestData[] getAllTestData(){
    List list=getHibernateTemplate().find("from TestData");
    TestData[] testDatas=new TestData[list.size()];
    list.toArray(testDatas);
    return testDatas;
  }
}
# vi TestDataDao.java
package com.domain.dao;
import java.io.Serializable;
import com.domain.pojo.TestData;
public interface TestDataDao extends Serializable{
  public TestData[] getAllTestData();
}
  • サービスの作成
# mkdir /home/test/src/com/domain/util
# cd /home/test/src/com/domain/util
# vi CommonConst.java
package com.domain.util;
public interface CommonConst{
  public static final String applicationContextKey="appContext";
}
# mkdir ../test
# cd ../test
# vi TestServiceImpl.java
package com.domain.test;
import com.domain.pojo.TestData;
import com.domain.dao.TestDataDao;
public class TestServiceImpl implements TestService{
  private TestDataDao testDataDao;
  public TestData[] getAllTestData(){return getTestDataDao().getAllTestData();}
  public TestDataDao getTestDataDao(){return this.testDataDao;}
  public void setTestDataDao(TestDataDao testDataDao){this.testDataDao=testDataDao;}
}
# vi TestService.java
package com.domain.test;
import java.util.Date;
import com.domain.pojo.TestData;
import com.domain.dao.TestDataDao;
public interface TestService{
  public TestData[] getAllTestData();
  public TestDataDao getTestDataDao();
  public void setTestDataDao(TestDataDao testDataDao);
}
# vi TestEngine.java
import java.util.Map;
import org.apache.tapestry.engine.BaseEngine;
import org.apache.tapestry.request.RequestContext;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.domain.util.CommonConst;
public class TestEngine extends BaseEngine implements CommonConst{
   protected void setupForRequest(RequestContext context){
     super.setupForRequest(context);
     Map global=(Map)getGlobal();
     ApplicationContext ac=(ApplicationContext)global.get(applicationContextKey);
     ac=WebApplicationContextUtils.getWebApplicationContext(context.getServlet().getServletContext());
     global.put(applicationContextKey,ac);
  }
}
  • ページの作成
# mkdir ../page
# cd ../page
# vi LoopPage.java
package com.domain.page;
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.event.PageRenderListener;
import com.domain.pojo.TestData;
import com.domain.test.TestService;
public abstract class LoopPage extends BasePage implements PageRenderListener{
  public abstract TestService getTestService();
  public void pageBeginRender(PageEvent event){
    setTestDataList(getTestService().getAllTestData());
  }
  public abstract TestData[] getTestDataList();
  public abstract void setTestDataList(TestData[] value);
  public abstract TestData getTestData();
  public abstract void setTestData(TestData value);
}
# cd /home/test/WEB-INF
# vi Loop.page
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE page-specification
    PUBLIC "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
    "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<page-specification class="com.domain.page.LoopPage">
  <property-specification name="testDataList" type="com.domain.pojo.TestData[]"/>
  <property-specification name="testData" type="com.domain.pojo.TestData"/>
  <property-specification name="testService" type="com.domain.test.TestService">
    global.appContext.getBean("testService")
  </property-specification>
</page-specification>
# vi Loop.html
<table border="1">
  <tr>
    <th>ID</th>
    <th>Name</th>
    <th>Date</th>
   </tr>
   <tr jwcid="@Foreach" source="ognl:testDataList" value="ognl:testData" element="tr">
     <td><span jwcid="@Insert" value="ognl:testData.testId"/></td>
     <td><span jwcid="@Insert" value="ognl:testData.testName"/></td>
     <td><span jwcid="@Insert" value="ognl:testData.regDate"/></td>
  </tr>
</table>
# vi Home.page

<page-specification>ディレクティブに追加

 <component id="linkToLoop" type="PageLink">
   <static-binding name="page">Loop</static-binding>
 </component>
# vi Home.html

<body>ディレクティブに追加

    <br><a jwcid="linkToLoop">LoopPage</a></br>

以下のURLにアクセスするとLoopPage編集へのリンクがある。
http://www.domain.com/test/app


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 587, today: 1, yesterday: 0
最終更新: 2008-11-26 (水) 02:09:09 (JST) (1272d) by aqua
オススメ

おすすめ
カレンダ
前月2012年 5月翌月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
<今日>
ログイン
ユーザ名:

パスワード:



パスワード紛失

新規登録
天気予報

資料提供天気予報コム
アクセスカウンタ
今日 : 161161161
昨日 : 577577577
総計 : 363715363715363715363715363715363715