Struts2,Spring,Hibernate5框架整合简称:SSH
零:CRM项目总结
这几天利用一点时间,把SSH框架整合了一下,顺便感受了一个SSH框架带来的好处。个人感觉SSH框架重点在前期的环境搭建,也就是配置文件的配置。配置好后,一切就水到渠成,如同火车行驶一样,一切就按部就班的写。下面来细细说说。
一:SSH框架整合前戏
1:导入Struts2的Jar包:一共有14个Jar包;2:导入Hibernate5的Jar包:一共有20个Jar;
3:导入Spring4的Jar包:一共15个Jar包;
*注意:其中有重复的冲突包(删除包的原则,删除低版本的jar包)
4:Struts2的配置文件:在web.xml中配置前端核心拦截器;在src目录下配置struts.xml的配置文件
5:Hibernate的配置文件:在src目录下配置hibernate.cfg.xml;在JavaBean类所在目录配置JavaBean的类名.hbm.xml
6:Spring的配置文件:在src目录下配置applicationContext.xml;在web.xml中配置监听器;
7:日志的配置文件:在src目录下配置log4j.properties
----------------------------------------------------------------------------------------------------------------------------------------------------------------
1:CRM整合前奏
1:创建数据库,crm_ssh;
2:创建表,base_dict,cst_customer,cst_linkman,sale_visit,sys_user;
3:创建包结构,com.crm_ssh01.web.action,com.crm_ssh01.service,com.crm_ssh01.dao,com.crm_ssh01.domain;
4:在com.crm_ssh01.domain包下创建数据库表对应的持久化类,基本类型数据都用包装类型
5:导入UI界面;
2:CRM整合前戏
1:导入Jar包;
2:创建config资源包,开始配置配置文件;
WEB层:(Action层,Struts框架)
struts.xml config目录下创建struts的核心配置文件,引入头文件
web.xml Struts的前端控制器,核心过滤器
业务层:(Service层,Spring框架)
applicationContext.xml config目录下创建spring的核心配置文件,引入头文件
加载hibernate.cfg.xml核心配置文件,配置事务管理器平台,开启事物注解
web.xml 配置Spring的监听器,加载Spring的核心配置文件
配置session在web层开启,在web层关闭
log4j.properties config目录下创建日志的配置文件
持久层:(Dao层,Hibernate框架)
hibernate.cfg.xml config目录下创建hibernate的核心配置文件:引入头文件,
配置数据库的4大参数,配置数据库方言,配置可选参数,配置C3P0连接池,加载资源映射文件
Xxx.hbm.xml 在domain目录下,创建与持久化类对应的资源映射文件
在配置客户的资源映射文件时,来源,行业,级别这三个单方面的配成一对多的关系
在配置客户联系人时,一方客户用set去配,多方联系人用many-to-one去配置
主外键的维护关系交给多方去维护
--------------------------------------------------------------------------------------------------------------------------------------------------------------
二:SSH框架整合高潮
*上面是Jar包以及配置文件配置完毕。
*下面开始整合SSH的项目:完成保存客户的功能
1:导入UI的jsp的文件,进入menu.jsp的页面修改添加客户的按钮,使其跳转到添加客户的界面;2:进入/jsp/customer/add.jsp页面里,修改其路径配置Action:customer_add.action;
3:创建com.day38_ssh1.web.action包,并创建CustomerAction类,继承ActionSupport。创建添加客户的方法public String add();
4:在struts.xml文件中配置此Action,用通配符的方式去配置。开启项目去测试是否能跳转,并执行add()方法;
5:创建数据库,并创建表,如果想想创建的话,不创建只要字段配置好,hibernate会帮助我们创建好。编写JavaBean,使其成为持久化类,并编写对象的Customer.hbm.xml文件的配置;
6:CustomerAction类去实现ModelDriven<Customer>,并实现模型驱动,封装数据。要实例化即new;在add方法中输出测试。Action编写好了;
7:编写Service业务层。创建com.day38_ssh1.service包,并创建CustomerService及其实现类。在其实现类中创建public void save(Customer customer);
8:在Spring中配置此业务类。在Action中注入CustomerService属性。并创建set方法。在Action的add方法中调用Service的save()方法。测试;
9:上面有一个小的优化,就是把Action的创建交由Spring管理,在applicationContext中编写CustomerAction的bean,并注入CustomerService;在struts.xml中把class改为在spring创建Action的id,并在Spring中声明Action为多例的。scope="prototype",再次测试;
10:编写持久层dao.创建com.day38_ssh1.dao包,并创建CustomerDao及其实现类。并编写public void save(Customer customer)方法
11:在applicationContext.xml文件中配置此持久层类。在Service的save方法中调用Dao的save()方法,测试是否成功。
12:自此,SSH框架的骨干中的SH就整合通了。
13:在CustomerDao中创建HibernateTemplate属性,并实现set方法。调用HibernateTemplate的save方法保存数据。
14:在applicationContext.xml文件中配置HibernateTemplate的bean,并在并注入dao。
15:加载hibernate.cfg.xml文件创建bean.LocalSessionFactoryBean,并加载hibernate的核心配置文件。
16:配置事物平台管理器,HibernateTransactionManager。
17:开启事物注解,并在ServiceImpl类上加上事物注解。
18:完整测试,添加客户看是否成功。
-------------------------------------------------------------------------------------------------------------------------------------------------------
crm整合配置文件(以用户注册、登录、退出为例)
1:在web层创建UserAction,继承ActionSupport,实现ModelDriven<User>,set注入userService;
2:在Service层创建UserService接口,UserServiceImpl实现类,在实现类中set注入customerDao,开启@Transactional注解3:在dao层创建CustomerDao接口,CustomerDaoImpl实现类继承HibernateDaoSupport;
4:在struts.xml配置文件中配置用户的action,但是创建UserAction交由Spring管理,所以action中的class写spring创建Action的id;
5:在applicationContext.xml的配置文件中配置Action,配置Service,配置Dao;
CRM整合高潮(实现用户注册、登录和退出)
1:用户注册功能.首先先要用Ajax异步判段注册名字是否相同,如果相同必须换用户名字,异步判断设置url为user_checkCode.action,提交给action接收。
2:在UserAction编写checkCode去实现判断用户名是否相同,调用UserServiceImpl,业务层再调用持久层UserDaoImpl,去数据库中查询是否有
相同的名字。有在action返回no字符串告诉不可以用这个用户名注册,否则可以用这个用户名注册。
3:注册实现,在页面form表单的action提交动作出改为user_regist.action,然后在UserAction中去接收用户名密码等信息,调用Service的方法,在业务层要设置
密码加密,设置用户状态等,调用持久层把数据插入到数据库.
4:在UserAction中做跳转,跳转到登录页面.
5:用户注册完成,进行测试调试.
6:用户登录功能.首先查看login.jsp的用户名和密码字段是否和持久化类的字段名称是否一致,不一致的话修改一致,然后修改form表单的action.
7:在Action编写用户登录的方法login(),调用业务层的登录方法,业务层将密码加密,用户状态封装到User对象中,再调用持久层的login(user)方法,
进行有条件的查询,查询到返回User对象,否则返回null,在Action判断如果为空,跳转到登录页面,否则,将用户封装到Session中,跳转到主页.
8:用户退出功能。修改用户退出超链接为user_loginout.action.
9:在Action中编写loginout(),获取session,从session中移除存在的用户,返回登录页面.
-------------------------------------------------------------------------------------------------------------------------------------------------------------
三:完整项目