构建最基础的ssh框架-商品添加

写代码这件事和很多技术活一样,当你许久未接触之后就会生疏了。

前言

整合ssh,搭建一个框架,将配置文件,基本类完成,实现产品添加入库。

目录

创建一个WEB项目并引入jar包
引入框架的配置文件
创建包结构和页面
编写Action/Dao/Service
Spring整合Struts
Spring整合hibernate
添加事务管理
运行程序
参考

一、创建一个WEB项目并引入jar包

SSH整合所需要的lib包

构建最基础的ssh框架-商品添加_第1张图片
lib.png

二、引入框架的配置文件

  • struts.xml
  • applicationContext.xml
  • web.xml
  • log4j.properties

1、web.xml

   
   
    org.springframework.web.context.ContextLoaderListener
   
   
    contextConfigLocation
    classpath:applicationContext.xml
   
  
  
  
    struts
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  
  
    struts
    /*
  

2、struts.xml






3、applicationContext.xml





4、log4j.properties

log4j.rootLogger=WARN,stdout,logfile
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${catalina.home}/logs/SSH.log
log4j.appender.logfile.MaxBackupIndex=100
log4j.appender.logfile.MaxFileSize=1024KB
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] [%l] - %m%n
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d %p]>> %l\: - %m%n
log4j.logger.org.hibernate=ERROR
log4j.logger.org.hibernate.SQL=ERROR
log4j.logger.org.hibernate.cache=ERROR
#ibatis rizhixiangguan
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout
#ibatis rizhixiangguan
log4j.logger.org.springframework=ERROR
log4j.logger.org.springframework.aop.framework=ERROR
log4j.appender.CONSOLE=org.apache.log4j.RollingFileAppender
log4j.appender.CONSOLE.File=${catalina.home}/logs/SSHConsole.log
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd hh\:mm\:ss} %-5p %c %x - %m%n


三、创建包结构和页面

1、新建包结构如下:

  • |-renault.ssh
    • |-action
    • |-model
      • |-Product
    • |-service
    • |-dao

2、在model包下新建 Product.java实体类:

package renault.ssh.model;
/*** 
 * 商品的实体类
 * @author Renault
 *
 */
public class Product {
    private Integer pid;
    private String pname;
    private Double price;
    public Integer getPid() {
        return pid;
    }
    public void setPid(Integer pid) {
        this.pid = pid;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
    
}

3、新建添加商品页面addProduct.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    保存
  
  
    

保存商品的页面

商品名称
商品价格

四、编写Action/Dao/Service

1、在Action包下新建ProductAction.java

package renault.ssh.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import renault.ssh.model.Product;
import renault.ssh.service.ProductService;

/**
 * 商品管理的Action类
 * @author Renault
 *
 */
public class ProductAction extends ActionSupport implements ModelDriven{
    //模型驱动使用的类
    private Product product = new Product();
    
    public Product getModel() {
        return product;
    }
    //struts和Sring整合过程中按名称自动注入的业务层类
    private ProductService productService;

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


}

2、在Service包下新建ProductService.java

package renault.ssh.service;

import renault.ssh.dao.ProductDao;

/**
 * 商品管理的服务类
 * @author renault
 *
 */
public class ProductService  {

    //业务层注入DAO的类
    private ProductDao productDao;

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

}

3、在Dao包下新建ProductDao.java

package renault.ssh.dao;


/**
 * 商品管理的Dao类
 * @author Renault
 *
 */
public class ProductDao  {


}

五、Spring整合Struts

配置Action、Service、Dao类和配置文件

1、在applicationContext.xml里面配置action、dao、service类

 
 
 
    
    
 
 
 
    
     


    

2、配置struts.xml

    
        
        
        
    

3、将addProduct.jsp里面的表单的action改成 action="product_save"

4、在ProductAction.java里添加保存方法:

/**
 * 保存商品
 */
    public String save(){
        System.out.println("Action里面的save方法执行了");
        productService.save(product);
        return NONE;
    }

5、在ProductService.java里添加保存方法:

/**
 * 业务层保存商品
 * @param product
 */
    public void save(Product product) {
        System.out.println("service里面的save方法执行了");
        productDao.save(product);
        
    }

6、在ProductDao.java里添加保存方法:

/**
 * Dao里面保存商品
 * @param product
 */
    public void save(Product product) {
        System.out.println("Dao里面的save方法执行了");
    }

7、启动服务器,运行addProduct.jsp,填写商品名称和价格后提交在控制台会打印

Action里面的save方法执行了
Service里面的save方法执行了
Dao里面的save方法执行了

六、Spring整合hibernate

1、创建数据库;
>create database ssh;
2、创建实体类的映射文件Product.hbm.xml



    
        
            
                
            
            
            
        
    

3、添加配置文件 jdbc.properties:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssh
jdbc.username=root
jdbc.password=admin
jdbc.maxActive=2000
jdbc.initialSize=20
jdbc.maxWait=2000
jdbc.minIdle=10

4、在applicationContext.xml配置hibernate

 





    
    
    
    


           

    
    
    
    
        
            org.hibernate.dialect.MySQLDialect
            true
            true
            update
        
    
    
    
        
        
            renault/ssh/model/Product.hbm.xml
        
    

5、在applicationContext.xml中的DAO里面注入sessionFactory



    

6、修改ProductDao.java,调用模板完成保存的操作

package renault.ssh.dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import renault.ssh.model.Product;

/**
 * 商品管理的Dao类
 * @author Renault
 *
 */
//注入sessionFactory必须继承HibernateDaoSupport 
public class ProductDao extends HibernateDaoSupport {

/**
 * Dao里面保存商品
 * @param product
 */
    public void save(Product product) {
        System.out.println("Dao里面的save方法执行了");
//调用模板的方法
        this.getHibernateTemplate().save(product);
    }

}

七、添加事务管理

1、配置事务管理器,在applicationContext.xml添加如下代码:


 
    




2、给ProductService.java类添加注解@Transactional

八、运行程序

构建最基础的ssh框架-商品添加_第2张图片
保存商品页面.png

构建最基础的ssh框架-商品添加_第3张图片
控制台输出.png

构建最基础的ssh框架-商品添加_第4张图片
数据库.png

参考

SSH整合所需要的lib包

慕课网-基于SSH实现员工管理系统之框架整合篇

你可能感兴趣的:(构建最基础的ssh框架-商品添加)