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 

SSH(四)控制层、业务层、dao层类的创建以及applicationcontext.xml和struts.xml配置的更多相关文章

  1. SSH框架整合中Hibernate实现Dao层常用结构

    一.疑惑 一直以来,我在使用SSH框架的时候经常会发现后者有疑虑到底使用hibernate的那种方法或者如何配置hibernate来操作数据库,经过 一段时间的学习下面我来总结一下,常用的dao层配置 ...

  2. Spring 控制器层如何调用DAO层

    1.写上注解 @Autowired 2.声明一个变量 private UserDao userDao; 3.注意!Spring里面数据库对象操作类不需要实例化就能调用

  3. 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写

    我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...

  4. ssh_maven的搭建之dao层的开发

    之前都是使用我们传统的方式进行引入jar包,现在我们使用maven进行管理依赖,这样,我们的jar就不需要我们进行管理,而且,我们的maven还可以进行项目构建,一个项目从编写源代码到编译,测试,运行 ...

  5. Junit结合Spring对Dao层进行单元测试

    关于单元测试,上一次就简单的概念和Mock基础做了,参考:http://60.174.249.204:8888/in/modules/article/view.article.php/74 实际开发过 ...

  6. MVC下的DAO接口类和SERVICE接口类区别?

    简单理解: DAO数据库访问对象 实现连接数据库 修改.添加等细节 service服务层 面向功能 把一个整个服务 细化 调用DAO其实service其中都是一些方法 去调用DAO 甚至方法名都和DA ...

  7. 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)

    转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...

  8. 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转

    表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的 ,DAO层就是将访问数 ...

  9. Java高并发秒杀API之业务分析与DAO层

    根据慕课网上关于java高并发秒杀API的课程讲解用maven+ssm+redis实现的一个秒杀系统 参考了codingXiaxw's blog,很详细:http://codingxiaxw.cn/2 ...

  10. SSH电力项目三 - Dao层、service层查询实现(HQL)

    底层方法封装:模糊查询,姓张的人 查询思路:select * from elec_text o           #Dao层     where o.textName like '%张%'     ...

随机推荐

  1. Elasticsearch 索引生命周期管理 ILM 实战指南

    文章转载自:https://mp.weixin.qq.com/s/7VQd5sKt_PH56PFnCrUOHQ 1.什么是索引生命周期 在基于日志.指标.实时时间序列的大型系统中,集群的索引也具备类似 ...

  2. 13. 第十二篇 二进制安装kubelet

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483842&idx=1&sn=1ef1cb06 ...

  3. 6.监控elasticsearch集群---放弃采用(获取不到数据),建议看另一篇文章:监控elasticsearch

    prometheus监控es,同样采用exporter的方案. 项目地址: elasticsearch_exporter:https://github.com/justwatchcom/elastic ...

  4. flask+gunicorn+nginx部署

    安装nginx和gunicorn yum install nginx pip3 install gunicorn flask项目配置 #main.py from flask import Flask ...

  5. prometheus设置使用密码nginx反向代理访问

    注意: 1.设置访问密码的方式 2.ngixn反向代理的配置 # 安装 Apache工具包 apt install apache2-utils htpasswd -bc /etc/nginx/.pro ...

  6. 欢迎来到ktq_cpp的cnblog

    欢迎来到ktq_cpp的cnblog 初学html,可能排版有一些问题,望指教 我的洛谷博客 我的AtCoder账号

  7. 自主创建mybtis管理应用,用以横向管理数据源

    这个是我写的第一个随手小记,一晃眼做后端开发也有7年多了,现在也准备将一些杂七杂八的资料整理下.也算是回顾这7年中做的比较有意思的东西了. 这个需求是我17年做的,当时的应用场景是仓储库比较多,随时会 ...

  8. Kafka之配置信息

    Kafka之配置信息 一.Broker配置信息 属性 默认值 描述 broker.id   必填参数,broker的唯一标识 log.dirs /tmp/kafka-logs Kafka数据存放的目录 ...

  9. 齐博x1.1用户登录接口

    用户的登录主要涉及到小程序登录.APP的帐号密码登录.APP的微信开发平台帐号登录.相应的地址是:http://qb.net/index.php/index/wxapp.login/index.htm ...

  10. html中可以写php代码,但是文件后缀名需要是.php而不是.html。否则php程序不会被解析执行。

    html中可以写php代码,但是文件后缀名需要是.php而不是.html.否则php程序不会被解析执行. <div class="goods_title"><?p ...