SSH(四)控制层、业务层、dao层类的创建以及applicationcontext.xml和struts.xml配置
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配置的更多相关文章
- SSH框架整合中Hibernate实现Dao层常用结构
一.疑惑 一直以来,我在使用SSH框架的时候经常会发现后者有疑虑到底使用hibernate的那种方法或者如何配置hibernate来操作数据库,经过 一段时间的学习下面我来总结一下,常用的dao层配置 ...
- Spring 控制器层如何调用DAO层
1.写上注解 @Autowired 2.声明一个变量 private UserDao userDao; 3.注意!Spring里面数据库对象操作类不需要实例化就能调用
- 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写
我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...
- ssh_maven的搭建之dao层的开发
之前都是使用我们传统的方式进行引入jar包,现在我们使用maven进行管理依赖,这样,我们的jar就不需要我们进行管理,而且,我们的maven还可以进行项目构建,一个项目从编写源代码到编译,测试,运行 ...
- Junit结合Spring对Dao层进行单元测试
关于单元测试,上一次就简单的概念和Mock基础做了,参考:http://60.174.249.204:8888/in/modules/article/view.article.php/74 实际开发过 ...
- MVC下的DAO接口类和SERVICE接口类区别?
简单理解: DAO数据库访问对象 实现连接数据库 修改.添加等细节 service服务层 面向功能 把一个整个服务 细化 调用DAO其实service其中都是一些方法 去调用DAO 甚至方法名都和DA ...
- 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)
转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...
- 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转
表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的 ,DAO层就是将访问数 ...
- Java高并发秒杀API之业务分析与DAO层
根据慕课网上关于java高并发秒杀API的课程讲解用maven+ssm+redis实现的一个秒杀系统 参考了codingXiaxw's blog,很详细:http://codingxiaxw.cn/2 ...
- SSH电力项目三 - Dao层、service层查询实现(HQL)
底层方法封装:模糊查询,姓张的人 查询思路:select * from elec_text o #Dao层 where o.textName like '%张%' ...
随机推荐
- day40-网络编程02
Java网络编程02 4.TCP网络通信编程 基本介绍 基于客户端--服务端的网络通信 底层使用的是TCP/IP协议 应用场景举例:客户端发送数据,服务端接收并显示控制台 基于Scoket的TCP编程 ...
- AOP实现系统告警
工作群里的消息怕过于安静,又怕过于频繁 一.业务背景 在开发的过程中会遇到各种各样的开发问题,服务器宕机.网络抖动.代码本身的bug等等.针对代码的bug,我们可以提前预支,通过发送告警信息来警示我们 ...
- Kibana:在Kibana中对数据进行深入分析 (drilldown)
文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/105193907 在上面,我们需要把之前地址栏中拷贝的内容粘贴过来,并做相应的修改.针 ...
- ProxySQL 读写分离方法
转载自:https://www.jianshu.com/p/597b840bf70c (使用正则表达式实现基本的读/写分离) 在这一部分,我将通过一个示例来演示如何通过正则表达式来实现读/写分离. 首 ...
- 1.通俗易懂理解Kubernetes核心组件及原理
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483736&idx=1&sn=0cbc3d6a ...
- Solutions:Elastic SIEM - 适用于家庭和企业的安全防护 ( 一)
- 15. Fluentd输入插件:in_tail用法详解
in_tail输入插件内置于Fluentd中,无需安装. 它允许fluentd从文本文件尾部读取日志事件,其行为类似linux的tail -F命令(按文件名来tail). 这几乎是最常用的一个输入插件 ...
- GitLab 之 Git LFS 大文件存储的配置
转载自:https://cloud.tencent.com/developer/article/1010589 1.Git LFS 介绍 Git 大文件存储(Large File Storage,简称 ...
- Java 基础三、接口与内部类
1. 在Java程序语言中,接口是对类的一种描述.例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口. public interface ...
- POJ1741 tree (点分治模板)
题目大意: 给一棵有 n 个顶点的树,每条边都有一个长度(小于 1001 的正整数).定义 dist(u,v)=节点 u 和 v 之间的最小距离.给定一个整数 k,对于每一对 (u,v) 顶点当且仅当 ...