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