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