(二)Struts2与Spring的整合

来源:互联网 发布:河南网络教育 编辑:程序博客网 时间:2024/05/17 23:03

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,否则不会发生跳转。

0 0