手把手搭建SSH+Activiti(附加源码)

  

 1.前言

     本篇博客,来为大家分享一下SSH+Activiti框架的搭建。其实整个过程并不是很复杂,就是引用一些jar包和配置一些属性文件而已。没有什么神奇的东西,都是给封装好的,我们只不过来个整合就可以了。整体的目录结构如下所示

手把手搭建SSH+Activiti(附加源码)_第1张图片



 2.环境准备

1)JDK1.6或者更高版本

2)数据库为MySql

3)Activiti为5.1.3版本的jar包

4)开发环境工具为Eclipse,需要安装流程设计器插件

有网的情况下,只需要搜索插件地址,然后全部安装即可,如下图所示

手把手搭建SSH+Activiti(附加源码)_第2张图片

 

没网络的情况下,直接下载插件activiti—eclipse_plugin.zip,把压缩包中的内容放入elicpse根目录的dropins文件夹下即可


 3.jar包准备

Struts2相关jar包

基本jar包(11个)

从struts-2.3.7-all.zip资源包中获取apps目录下对应jar包apps\struts2-blank\WEB-INF\lib\*.jar

相关jar包(2+1个)

struts2整合Spring(需要使用)

struts2-spring-plugin-2.3.7.jar

struts2整合Ajax(通常需要使用)

struts2-json-plugin-2.3.7.jar

struts2使用注解开发(根据需求开启)

struts2-convention-plugin-2.3.7.jar

Spring3相关jar包

核心jar包(4个)

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

日志包(2个)

com.springsource.org.apache.commons.logging-1.1.1.jar

com.springsource.org.apache.log4j-1.2.15.jar

AOP包(4个)

spring-aop-3.2.0.RELEASE.jar

spring-aspects-3.2.0.RELEASE.jar

com.springsource.org.aopalliance-1.0.0.jar

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

JDBC包(2个)

spring-jdbc-3.2.0.RELEASE.jar

spring-tx-3.2.0.RELEASE.jar

事务管理(1个)

整合ORM框架(1个)

spring-orm-3.2.0.RELEASE.jar

WEB集成(1个)

spring-web-3.2.0.RELEASE.jar

整合JUnit(1个)

spring-test-3.2.0.RELEASE.jar


Hibernate相关jar包

核心jar包(1个)

hibernate3.jar

必须的jar包(6个)

lib\required\目录下的所有包

antlr-2.7.6.jar

commons-collections-3.1.jar

dom4j-1.6.1.jar

javassist-3.12.0.GA.jar

jta-1.1.jar

slf4j-api-1.6.1.jar

jpa的jar包(1个)

hibernate-jpa-2.0-api-1.0.1.Final.jar

lslf4j整合log4j的jar包(1个) (log4j在spring中已导入)

slf4j-log4j12-1.7.2.jar

lc3p0连接池jar包(1个)

c3p0-0.9.1.jar

数据库驱动jar包(N个)(按需求导入)


Activiti相关jar包

1.activiti-5.13\libs下所有包

2.activiti-5.13\wars\activiti-rest\WEB-INF\lib下mybatis-3.2.2

3.activiti-5.13\wars\activiti-rest\WEB-INF\lib下joda-time-2.1.jar



 4.配置文件配置

Struts2相关配置

1.web.xml加入Struts2核心过滤器


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

 2.Struts.xml配置

在此配置中需要配置控制器以及拦截器的相关信息




    
    
    
    

    
    	
    	
    		
    		
    			
    		
    		
    		
				
				
			
    	
    
  		
		 
    	
    	
    		
    			login.jsp
    		
    	
    	
    	
        	WEB-INF/views/main.jsp
        	WEB-INF/views/top.jsp
        	WEB-INF/views/left.jsp
        	WEB-INF/views/welcome.jsp
        
        
        
            WEB-INF/views/leaveBill/list.jsp
            WEB-INF/views/leaveBill/input.jsp
            
        		leaveBillAction_home.action
        	
        
    	
    	
        	
        		workflowAction_deployHome.action
        	
        	WEB-INF/views/workflow/workflow.jsp
        	WEB-INF/views/workflow/task.jsp
        	WEB-INF/views/workflow/image.jsp
        	
    			workflowAction_listTask.action
            
        	
        		${#formKey}
        	
        	WEB-INF/views/workflow/taskForm.jsp
            WEB-INF/views/workflow/taskFormHis.jsp
        
    



log4j.properties配置

用来配置控制台打印的一些warn、error等类型信息,也可以输出到外部文件中。

log4j.rootLogger=WARN, CA

# ConsoleAppender
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern= %d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n

db.properties中放置的是连接数据库的一些信息

jdbc.url=jdbc:mysql://192.168.24.82:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=123456

activiti-context.xml中放置的是流程实例对象相关信息




	
	
		
		
		
		
		
		
	
	
	
		
	
	
	
	
	
	
	
	
	
	



而Hibernate与Spring的整合,以及Activiti与Spring的整合,都放置在applicationContext.xml


 

	
	
		
		
		
		
	
	
	
	
	
		
		
		
		
			
				hibernate.hbm2ddl.auto=update
				hibernate.show_sql=true
				hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
			
		
		
		
			
				classpath:cn/itcast/ssh/domain/*.hbm.xml
			
		
	
	
	
	
	
		
	
	
	
	
		
			
			
			
			
		
	
	
	
	
		
		
	
	
	
	
		
	
	
	
	
	
	
	
	
		
                    


其余的applicationContext-*.xml中的配置文件配置的就是相关的依赖注入的信息


 5.Dao层

而在Dao层,引入了HibernateDaoSupport模板,具体如下

import java.util.List;

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

import cn.itcast.ssh.dao.IEmployeeDao;
import cn.itcast.ssh.domain.Employee;

public class EmployeeDaoImpl extends HibernateDaoSupport implements IEmployeeDao {
	
	/**使用用户名称查询用户的集合*/
	@Override
	public List findEmployeeByName(String name) {
		List list = this.getHibernateTemplate().find("from Employee where name=?",new Object[]{name});
		return list;
	}
}


其实可以再向上抽象一层,主要是看自己如何分层了。本篇就是为了展示SSH框架,顾没有划分那么细致。


 6.Service层

相关的业务逻辑,需要在Service层中,而Activiti中的Dao数据引擎对象,也在Service中进行注入

public class LeaveBillServiceImpl implements ILeaveBillService {

	private ILeaveBillDao leaveBillDao;

	public void setLeaveBillDao(ILeaveBillDao leaveBillDao) {
		this.leaveBillDao = leaveBillDao;
	}

	/**查询所有的请假单列表*/
	@Override
	public List findLeaveBillList() {
		List list = leaveBillDao.findLeaveBillList();
		return list;
	}

	/**保存/更新请假单*/
	@Override
	public void saveLeaveBill(LeaveBill leaveBill) {
		//获取请假申请单的ID,判断执行的是新增的操作还是修改的操作
		Long id = leaveBill.getId();
		//执行新增
		if(id==null){
			//获取页面的表单值,从Session中获取当前用户的对象,建立多对一的关联关系,直接执行保存
			Employee employee = SessionContext.get();
			//组织PO对象
			//leaveBill.setState(0);//设置状态,0表示初始状态
			leaveBill.setUser(employee);//建立多对一的关联关系
			leaveBillDao.save(leaveBill);
		}
		//执行编辑
		else{
			leaveBillDao.update(leaveBill);
		}
		
	}

	/**使用主键ID,查询请假申请单的对象*/
	@Override
	public LeaveBill findLeaveBillByID(Long id) {
		LeaveBill bill = leaveBillDao.findLeaveBillByID(id);
		return bill;
	}
	
	/**使用ID,删除请假单*/
	@Override
	public void deleteLeaveBillByID(Long id) {
		leaveBillDao.deleteLeaveBillByID(id);
	}
}

 7.Controller层

Controller是Struts2中的Action,在此继承了ActionSupport和实现了ModelDriven接口

@SuppressWarnings("serial")
public class LeaveBillAction extends ActionSupport implements ModelDriven {

	private LeaveBill leaveBill = new LeaveBill();
	
	@Override
	public LeaveBill getModel() {
		return leaveBill;
	}
	
	private ILeaveBillService leaveBillService;

	public void setLeaveBillService(ILeaveBillService leaveBillService) {
		this.leaveBillService = leaveBillService;
	}

	/**
	 * 请假管理首页显示
	 * @return
	 */
	public String home(){
		//1:查询请假单申请表,返回List
		List leaveList = leaveBillService.findLeaveBillList();
		ValueContext.putValueContext("leaveList", leaveList);
		return "home";
	}
	
	/**
	 * 添加请假申请
	 * @return
	 */
	public String input(){
		//获取请假ID
		Long id = leaveBill.getId();
		//跳转到编辑页面
		if(id!=null){
			//1:获取请假单ID,使用请假单ID作为条件,查询请假单LeaveBill对象
			LeaveBill bill = leaveBillService.findLeaveBillByID(id);
			//2:将LeaveBill对象放置到栈顶
			ValueContext.putValueStack(bill);
		}
		return "input";
	}
	
	/**
	 * 保存/更新,请假申请
	 * 
	 * */
	public String save() {
		//执行保存
		leaveBillService.saveLeaveBill(leaveBill);
		return "save";
	}
	
	/**
	 * 删除,请假申请
	 * 
	 * */
	public String delete(){
		//获取请假申请单ID
		Long id = leaveBill.getId();
		leaveBillService.deleteLeaveBillByID(id);
		return "save";
	}
	
}


 8.小结

以上就是整个SSH+Activiti的框架搭建,其实很简单,就是做一些配置而已。

源码下载:SSH+Activiti

你可能感兴趣的:(Java学习,SSH框架)