開發流程:
1)安裝JDK1.5,Eclipse等開發平台、環境;
2)建立工程:New->MyEclipse->Web Project;
3)匯入Spring Library:MyEclipse->Add Spring Capabilities,會在WEB-INF下面產生預設applicationContext.xml;
4) 拷貝Spring和WEBWORK的相關JAR到WEB-INF下的lib目錄,會在工程下產生.classpath檔案;
5)配置WEB-INF下面的web.xml,加入spring設定檔,指定web根目錄,加入webwork映射,註冊webwork標籤庫,加入架構所需的SERVLET配置,並拷貝webwork.tld到WEB-INF下面;
6)拷貝配置xwork.xml,並配置相關的頁面跳轉資訊,編譯時間會自動拷貝到WEB-INF下的classes目錄,運行時起映射作用;
7)配置applicationContext.xml,對每個DAO配置一節,DAO中引用的其他DAO全部要在<property>中配置,相當於執行個體化,
另外資料訪問所需的資料來源也在此定義,例如在TOMCAT中:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/dataSource</value>
</property>
</bean>
在WEBLogic中 <value>jdbc.quality</value>;
8)在src中建action、dao、bean等,在WebRoot下建jsp,htm,xml等
開發常式:
1)<input id="username" name="operate.userName" type="text" >,
在testAction定義有bean類型的變數operate,其屬性userName通過文字框直接提交到Action進行處理;
2)<input id="username" value="<ww:property value="operate.userName"/>" type="text" >
頁面上的文字框的值拿到Action裡面bean類型的變數operate的屬性userName的值
3)DAO都對應一個Interface,在Action裡面通過使用介面來執行個體化DAO,
例如:private ITest testDAO=null,testDAO不必初始化,通過在applicationContext.xml中進行反轉初始化;
4)Action預設執行execute()方法,例如:<form method="post" action="<%=request.getContextPath()%>/testWEB/testAction.action">,如果調用別的方法,例如executeOther()方法,則頁面的寫法如下:
<form method="post" action="<%=request.getContextPath()%>/testWEB/testAction!executeOther.action">
5)屬性的get,set方法可以自動產生:Source->Generate Getters and Setters
6)ALT+/,或ALT+.可以彈出文法
webwork詳細文法參考《webwork in action.doc》。
注意事項:
1.盡量給所有的類的成員變數加Getters and Setters方法。
2.在spring的設定檔applicationContext.xml中,
如加入
<bean id="utilsDao" parent="baseTransaction">
<property name="target">
<bean class="quality.dao.UtilsDao">
<property name="jdbcTemplate"><ref bean="jdbcTemplate"/></property>
</bean>
</property>
</bean>
時,切記bean的id名稱一定要與調用該dao的Action中的dao的對象同名;如果property中還包含其他對象,對應dao中也一定要包含該對象作為其成員變數。
3.申明一個新的action時,一定要保證其實現xwork裡面的Action介面,不要混淆。import com.opensymphony.xwork.Action;
4.action中所有的方法不要帶參數。
5.action中用介面來執行個體化dao對象,如:private IOperatorDao operatorDao = null;