ssh框架的运作方式就是页面请求控制层,控制层调用dao层的方法,dao层完成对数据的操作的一个过程。

现在我们初步简单编写各层的class.

action控制层:

ActionSupport:实现了很多的实用借口,提供了很多默认方法,这些默认方法包括国际化信息的方法、默认的处理用户请求的方法等,这样可以大大的简化Acion的开发。

ModelDriven:把实体类当成页面数据的收集对象。

注:modeldriven作用:实现ModelDriven就必须实现getModel这个方法,该方法返回的是你的ModelDrivern泛型中设定的实体类。其实是为了实现代码的重用,不要再定义一次你在数据访问层定义的属性了,直接用那个类就行了。注意返回值,如果实现getModel时忘记了修改其返回值,在项目运行后,后台获取前段数据时将全部为null。

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数据实现层:

public class productDao {

	public void sava(product product){
System.out.println("业务层调用dao层成功!"); } }

struts整合spring有两种方式:

1、struts自身创建action,在struts.xml中配置即可。缺点:因为action由struts创建因此不具备spring的aop功能。

2、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 

最新文章

  1. struts-json-plugin result中配置对象的序列化
  2. metagenome 简介
  3. Net分布式系统之二:CentOS系统搭建Nginx负载均衡
  4. 通过Sysprep封装系统
  5. 16位的MD5加密和32位MD5加密的区别
  6. 监控Linux性能的18个命令行工具
  7. (转)第三方登录(QQ登录)开发流程详解
  8. JS模块与命名空间的介绍
  9. Asp.Net 常用工具类---Config操作(7)
  10. 【分享】01. Eclipse for PHP + phpStudy 搭建php开发环境
  11. 解决Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Student_recruit]]
  12. HBase Region级别二级索引
  13. Socket网络编程(案例)
  14. 为Nexus配置阿里云代理仓库
  15. 第六节:SignalR完结篇之依赖注入和分布式部署
  16. Hadoop学习笔记(五):java开发MapReduce
  17. bat 复制文件夹,文件名递增 等操作
  18. supervison
  19. python内置函数getattr用法
  20. 阿里云数据库配置学习笔记(二):下载并配置MySQL数据库

热门文章

  1. 2022CSP-J初赛游记
  2. Python实验报告——第4章 序列的应用
  3. filebeat读取超链接日志 symlinks
  4. Windows 下JDK绿色免安装制作教程
  5. Fluentd部署:如何监控Fluentd
  6. PAT (Basic Level) Practice 1020 月饼 分数 25
  7. mac通过docker一键部署Jenkins
  8. 【Java8新特性】- Lambda表达式
  9. Python 实验报告(第三周)
  10. Linux Block模块之deadline调度算法代码解析