1  

  好了,前面spring与hibernate的整合开发我们基本上讲完了,现在要开始服务层的开发,也就是处理事务的action,在这里我们需要引入spring与struts的整合。也就是将action也作为一个bean交由spring进行管理。当然首先我们要完成相关的配置。

2  配置

 第一步当然是现在项目中引入struts包,也可以通过IDE快速的引入。

 然后就是修改web.xml的配置信息:

  <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

  依次简单解释一下:

  第一个是通过配置ContextLoaderListener监听器,使容器启动时,自动加载applicationContext配置,因为它实现了ServletContextListener这个接口,容器启动时会自动执行它实现的方法。

  然后配置我们applicationcontext.xml所在位置,如果是默认位置的话也可以不用配置。

  最后两个大家都比较熟悉了,就是struts拦截器。

3  编写服务层

  同样的,按照分层设计的思想,这里我们同样采样接口开发的设计模式。先编写服务器层接口类,然后在编写具体的实现类。

  比如这里我们编写了一个关于员工的服务层接口:

public interface EmpService {

    public static final int LOGIN_FAIL=0;

    public static final int LOGIN_EMP=1;

    public static final int LOGIN_MGR=1;

    public int login(Manager mgr);

    public String punch(Employee emp);

    public Set<AttendType> getAllAttendType();

    public boolean addApplication(Employee emp);
}

  接口中定义了一些常量以及方法,然后我们在实现类中进行具体的实现:

public class EmpServiceImp implements EmpService{

    private EmployeeDAO empDao;
private ManagerDAO mgrDao; public EmployeeDAO getEmpDao() {
return empDao;
} public void setEmpDao(EmployeeDAO empDao) {
this.empDao = empDao;
} public ManagerDAO getMgrDao() {
return mgrDao;
} public void setMgrDao(ManagerDAO mgrDao) {
this.mgrDao = mgrDao;
} @Override
public int login(Manager mgr) {
// TODO Auto-generated method stub
if( empDao.findByNameAndPass(mgr).size() >= 1){
return LOGIN_EMP;
}else if(mgrDao.findMgrByNameAndPass(mgr).size() >= 1){
return LOGIN_MGR;
}else{
return LOGIN_FAIL;
}
} @Override
public String punch(Employee emp) {
// TODO Auto-generated method stub
return null;
} @Override
public Set<AttendType> getAllAttendType() {
// TODO Auto-generated method stub
return null;
} @Override
public boolean addApplication(Employee emp) {
// TODO Auto-generated method stub
return false;
} }

  这里需要注意的是:我们使用的DAO类(比如EmployeeDAO)都是接口层,而不是具体的实现类,也就是说这个时候我的action是不知道到时候要调用哪个dao实现类的。

怎么办呢?自然想到spring对于bean对象的管理,我们可以在配置文件中配置,像action实现类中注入其所需的dao实现类。

4  注入配置

  ok这里就比较简单啦,又回到了spring的配置上:

    <bean id="daoTemplate" abstract="true" lazy-init="true" p:sessionFactory-ref="sessionFactory"/>
<bean id="EmployeeDao" class="com.souvenir.daoImp.EmployeeDaoImp" parent="daoTemplate"/>
<bean id="PaymentDao" class="com.souvenir.daoImp.PaymentDaoImp" parent="daoTemplate"/>
<bean id="ManagerDao" class="com.souvenir.daoImp.ManagerDaoImp" parent="daoTemplate"/> ...... <!-- action配置 -->
<bean id="EmpManager" class="com.souvenir.serviceImp.EmpServiceImp">
<property name="empDao" ref="EmployeeDao" />
<property name="mgrDao" ref="ManagerDao" />
</bean>

  通过配置可以看出我们向action实现类中注入了两个bean对象,其分别对应我们之前定义好的dao实现类。

5  ok,至此关于SSH集成开发配置的内容就结束了,归根到底其核心还是通过spring来管理dao与action这些bean对象。

  剩下的事就是前端开发然后调用action进行处理,也就是struct的配置啦,这里就不再赘述了。

SSH开发实践part4:Spring整合Struts的更多相关文章

  1. spring 整合struts

    1.例子:未被spring整合 struts.xml 的配置文件 <constant name="struts.enable.DynamicMethodInvocation" ...

  2. Spring整合Struts的两种方式介绍

    1 使用Spring托管Struts Action 该种方式就是将Struts Action也视为一种Bean交给Spring来进行托管,使用时Struts的配置文件中配置的Action的classs ...

  3. 8 -- 深入使用Spring -- 7... Spring 整合 Struts 2

    8.7 Spring 整合 Struts2 8.7.1 启动Spring 容器 8.7.2 MVC框架与Spring整合的思考 8.7.3 让Spring管理控制器 8.7.4 使用自动装配

  4. SSH开发实践part1:Spring与Hibernate整合

    1 之前把SSH看完了,现在从头开始进行项目实践.现在讲整个过程中的点滴记录下来,希望对后来者有参考. 2 SSH是一个轻量级的java开发框架,struts负责MVC开发模式中的controller ...

  5. 【SSH】Spring 整合 Struts

    添加 spring-struts-3.2.9.RELEASE.jar struts-config.xml 添加 <controller> <set-property property ...

  6. spring整合struts

    整合目标:使用spring的bean管理struts action service. 整合步骤: 一.加入spring 1.加入spring jar包 2.配置web.xml文件 <contex ...

  7. Spring整合struts的配置文件存放问题

    只使用Spring的时候,我把applicationContext.xml是放在项目的src路径下的,这样使用ClassPathXmlApplicationContext很方便嘛 整合了struts之 ...

  8. 后端开发实践:Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  9. spring 整合 struts

    struts配置 objectFactory 在struts.xml添加,用spring工厂管理action对象 <constant name="struts.objectFactor ...

随机推荐

  1. 扒一扒编辑距离(Levenshtein Distance)算法

    最近由于工作需要,接触了编辑距离(Levenshtein Distance)算法.赶脚很有意思.最初百度了一些文章,但讲的都不是很好,读起来感觉似懂非懂.最后还是用google找到了一些资料才慢慢理解 ...

  2. [uwp开发]数据绑定那些事(2)

    接着上一篇来侃. 二.实体到控件之间的绑定 这儿不知道用实体这个词恰不恰当,凑活着理解就行了.他可以是一个类实例,也可以是一个集合. 所以,相应的我们就引入两个Demo,第一个介绍用简单的类作为作为数 ...

  3. c语言编写的日历

    输入年份如2013,显示2013年的日历. 思路: 1.查找每个月1号是星期几(这里利用了1990年1月1号是星期一) 计算年份如2013年1月1号到1990年1月1号有Days天,Day%7得到星期 ...

  4. LeetCode-Implement strStr()-KMP

    Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...

  5. unity3d中的Viewport

    Camera属性中有个Viewport Rect,如下图: X.Y为(0, 0)代表左下角,(1, 1)代表右上角:W和H分别是Viewport的宽(Width)和高(Height),摄像机的Aspe ...

  6. C#制作高仿360安全卫士窗体<一>

    开始写这一系列博客之前先要向大家说声抱歉,放肆雷特建立很久却很少有更新.当然博客人气也不旺,大部分都是看的人多评论收藏的人少.一直想要改变这种状态,正好赶上了最近工作上做了一个高仿360安全卫士窗体. ...

  7. IT小小鸟读后感

    我是一只小小鸟(读后感) 当我成为闽江学院的一名学子时,我选择了我自己的专业(软件工程).成为大一新生的我对着未来充满着希望憧憬.但现实并不是美好的我得替今后的我想想以后大学毕业了到底我到了社会上要用 ...

  8. Ext.Ajax中scope的作用

    在Ext的前台Js中使用Ajax请求,如果想让回调函数中的this作用域跟当前的类一样如何实现呢?Ajax提供了一个参数scope. 详细代码如下: layout : { type : 'accord ...

  9. SqlServer 临时表、表变量、函数 替代游标

    http://www.cnblogs.com/chongzi/archive/2011/01/19/1939106.html 临时表 存放在tempdb中 --存储过程中将多表连接结果写入到临时表中, ...

  10. 【BZOJ】【1798】【AHOI2009】Seq维护序列

    线段树 属于线段树中级应用吧…… 要打两种标记:乘法和加法标记.一开始我想着可以像只有加法标记那样,永不下传,查询的时候依次累加就好了.后来发现不会写……只好每次update的时候……遇到标记!下传! ...