(二)Struts2与Spring的整合

原创 2016年08月30日 12:54:25

1.页面的创建

我们直接在WEB-INF下面创建addProduct.jsp页面,部分代码如下:

这里写图片描述

2.编写Action、Service和DAO层的相应类

Action下新建类如下:

package com.vayne.ssh.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.vayne.ssh.domain.Product;
import com.vayne.ssh.service.ProductService;

/**
 * 商品管理action
 * @author vayne
 *
 */

public class ProductAction extends ActionSupport implements ModelDriven<Product>{

    //模型驱动使用的类
    private Product product = new Product();
    @Override
    public Product getModel() {
        // TODO Auto-generated method stub
        return product;
    }

    //struts和spring整合过程中按名称自动注入的业务层类
    private ProductService productService;

    public void setProductService(ProductService productService) {
        this.productService = productService;
    }


}

service下的类:

package com.vayne.ssh.service;

import com.vayne.ssh.dao.ProductDAO;

/**
 * 商品管理的Service类
 * @author vayne
 *
 */

public class ProductService {
    //业务层注入DAO类
    private ProductDAO productDao;


    public void setProductDao(ProductDAO productDao) {
        this.productDao = productDao;
    }



}

DAO下的类:

package com.vayne.ssh.dao;
/**
 * 
 * 商品管理的DAO类
 * 
 */
public class ProductDAO {

}

3.配置Action 、Service和DAO的类

配置Action实际上是决定action由谁创建。

这里有两种方式,一种是Action由struts自身负责创建,第二种是由spring负责创建,但是配置第一种方式的时候,我的项目无法正常运行,因此我这里仅仅介绍第二种方式,如果以后第一种方式出错原因我找到了再回来补充。

(1)spring负责创建struts的action

首先在spring中配置bean:

这里写图片描述

我们这里要注意scope属性:

由struts2创建的action是多例的,有spring创建的action是单例的,因此指定scope=”prototype”,使其变成多例。

然后在struts.xml文件中引用:

这里写图片描述

为了检测是否已经打通,我们分别在action、service和dao层编写一个save方法来验证,各自代码如下:

ProductAction.java:

package com.vayne.ssh.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.vayne.ssh.domain.Product;
import com.vayne.ssh.service.ProductService;

/**
 * 商品管理action
 * @author vayne
 *
 */

public class ProductAction extends ActionSupport implements ModelDriven<Product>{

    //模型驱动使用的类
    private Product product = new Product();
    @Override
    public Product getModel() {
        // TODO Auto-generated method stub
        return product;
    }

    //struts和spring整合过程中按名称自动注入的业务层类
    private ProductService productService;

    public void setProductService(ProductService productService) {
        this.productService = productService;
    }


    /**
     * 商品保存执行方法
     */

    public String save(){
        System.out.println("Action中的save执行了...");

        productService.save(product);

        return NONE;
    }




}

ProductService.java

package com.vayne.ssh.service;

import com.vayne.ssh.dao.ProductDao;
import com.vayne.ssh.domain.Product;

/**
 * 商品管理的Service类
 * @author vayne
 *
 */

public class ProductService {
    //业务层注入DAO类
    private ProductDao productDao;


    public void setProductDao(ProductDao productDao) {
        this.productDao = productDao;
    }


    public void save(Product product) {
        // TODO Auto-generated method stub
        System.out.println("Service中的save执行了...");
        productDao.save(product);

    }



}

ProductDao.java:

package com.vayne.ssh.dao;

import com.vayne.ssh.domain.Product;

/**
 * 
 * 商品管理的DAO类
 * 
 */
public class ProductDao {

    public void save(Product product) {
        // TODO Auto-generated method stub

        System.out.println("dao中的save执行了...");
    }

}

注意:要在jsp文件中添加action,否则不会发生跳转。

版权声明:本文为博主原创文章,转载请注明出处。

struts2——整合spring与struts2

struts2与spring整合以后,可以在struts中直接使用spring进行bean的配置。换句话说就是让struts2的action由容器管理。...
  • suneqing
  • suneqing
  • 2015年10月29日 21:33
  • 2123

Spring整合Struts2的两种方式

Spring提供了一个ContextLoaderListener,该监听类实现了ServletContextListener接口。该类可以作为Listener使用,它会在创建时自动查找WEB-INF/...
  • cuiyaoqiang
  • cuiyaoqiang
  • 2016年07月12日 11:44
  • 4780

Struts2+Spring集成合并

前边单独总结了Struts2,Spring和Ibaits框架了,那么怎么结合使用呢?这次先来看一下Sturts2和Spring的集成合并。其实挺简单的,就是导入各自的jar包以及连接彼此的jar包,分...
  • liujiahan629629
  • liujiahan629629
  • 2014年03月07日 22:14
  • 23461

详细分析spring与struts2的整合原理

详细分析spring与struts2的整合原理
  • canot
  • canot
  • 2016年02月19日 15:52
  • 3952

Spring 4与Struts 2项目基于XML的集成实战

Spring 4与Struts 2项目基于XML的集成实战。为什么要写这篇Hello World级别的文章。大约十年前,我开始使用Spring 2和Struts 1开发Web应用,构建工具使用的是An...
  • chszs
  • chszs
  • 2015年10月04日 14:15
  • 4517

struts2_spring整合出错问题

启动服务器时出现异常:警告: Failed startup of context com.google.apphosting.utils.jetty.DevAppEngineWebAppContext...
  • Callo_xu
  • Callo_xu
  • 2011年03月09日 18:40
  • 1332

struts2_hibernate5_spring4整合的一般步骤及其注意事项

整合逻辑:先整合spring,再整合hibernate,最后整合Struts2. spring整合: 1.导入相关jar包:导入spring相关jar包:ioc,aop,tx,web,junit整合包...
  • fengbird
  • fengbird
  • 2016年12月27日 22:54
  • 1445

关于spring与struts2使用Annotion注解方式的集成

参考http://www.iteye.com/problems/79605  spring的配置: 1.classpath*:spring.xml http://www.sp...
  • yan_dk
  • yan_dk
  • 2012年12月08日 21:40
  • 2604

关于struts2与spring整合中,scope=“?”的使用,对整个系统的影响

struts+spring action应配置为scope="prototype" "personAction" scope="prototype" class="quickstart.acti...
  • fq769306793
  • fq769306793
  • 2015年07月12日 11:17
  • 572

Spring与Struts2整合的执行原理.

web容器启动后框架的加载执行流程
  • qq_32101859
  • qq_32101859
  • 2016年04月16日 16:55
  • 698
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(二)Struts2与Spring的整合
举报原因:
原因补充:

(最多只允许输入30个字)