ssh框架的運做方式就是頁面請求控制層,控制層調用dao層的方法,dao層完成對數據的操做的一個過程。javascript
如今咱們初步簡單編寫各層的class.html
action控制層:java
ActionSupport:實現了不少的實用藉口,提供了不少默認方法,這些默認方法包括國際化信息的方法、默認的處理用戶請求的方法等,這樣能夠大大的簡化Acion的開發。spring
ModelDriven:把實體類當成頁面數據的收集對象。編程
注:實現ModelDriven就必須實現getModel這個方法,該方法返回的是你的ModelDrivern泛型中設定的實體類。實際上是爲了實現代碼的重用,不要再定義一次你在數據訪問層定義的屬性了,直接用那個類就好了。注意返回值,若是實現getModel時忘記了修改其返回值,在項目運行後,後臺獲取前段數據時將所有爲null。tomcat
public class productAction extends ActionSupport implements ModelDriven<product> { //模型驅動使用的類 private product product = new product(); public product getModel() { // TODO Auto-generated method stub return product; } //struts和spring整合過程當中按名稱注入業務層的類 private productService productService; public void setProductService(productService productService) { this.productService = productService; } //控制層的save方法 public void save(){ System.out.println("頁面調用控制層的方法成功!"); productService.save(product); } }
service業務層:服務器
public class productService { //業務層注入dao的類 private productDao productDao; //在spring中有set方法就能夠完成注入 public void setProductDao(productDao productDao) { this.productDao = productDao; } //業務層保存商品的方法 public void save(product product){ System.out.println("控制層調用業務層成功!"); productDao.sava(product); } }
dao數據實現層:app
public class productDao { public void sava(product product){ System.out.println("業務層調用dao層成功!"); } }
struts整合spring有兩種方式:框架
一、struts自身建立action,在struts.xml中配置便可。缺點:由於action由struts建立所以不具有spring的aop功能。ssh
二、spring建立管理action,須要在applicationcontext.xml中配置action,而後再struts.xml配置中class引入前者配置的action的ID。
spring applicationcontext.xml配置添加:
<!-- struts整合spring的第二種方式:action由spring來管理:優勢,可使用aop面向切面編程 --> <bean id="productAction" class="com.ssh.action.productAction"> <!-- 須要手動注入service --> <property name="productService" ref="productService"></property> </bean> <!-- 配置業務層的類 --> <bean id="productService" class="com.ssh.service.productService"> <property name="productDao" ref="productDao"></property> </bean> <!-- 配置DA0的類 --> <bean id="productDao" class="com.ssh.dao.productDao"> </bean>
struts struts.xml配置:
這裏的action name="production_*"是須要和咱們的頁面的提交訪問action保持一致。
<!-- struts整合spring的第一種方式 :struts自身建立action的類。在struts.xml中完成配置。缺點:該方式不能使用spring的aop 這裏推薦使用第二種整合方式,第一種暫且註釋以做比較。--> <!-- <package name="default" namespace="/" extends="struts-default"> <action name="product_*" class="com.ssh.action.productAction" method="{1}" > </action> </package> --> <!-- struts整合spring的第二種方式:action由spring來管理:優勢,可使用aop面向切面編程 --> <!-- 這裏配置的action class只須要引入spring中配置的action的ID,而不須要再引入全路徑--> <package name="default" namespace="/" extends="struts-default"> <action name="product_*" class="productAction" method="{1}" > </action> </package>
添加前期建好的addproduct.jsp頁面的from action=「product_sava"
<s:form action="product_save" method="post" namespace="/" theme="simple">
完成了各層類的建立和配置整合,啓動tomcat服務器,訪問咱們以建好的第一個頁面。
http://localhost:8080/ssh/addproduct.jsp
點擊添加按鈕,頁面按照配置好的action找到相應的控制層以及控制層裏的方法,開始執行,觀察MyEclipse console控制檯輸出:
至此,咱們的struts和spring整合初步完成。
product