1、Struts2+Spring+Hibernate整合流程Struts2+Spring3.0+Hibernate3.3整合过程(老夫呕心沥血制作,如果要传播,请一定联系你翔哥!翻版必究!)一、 创建WEB工程,在工程中按照如下规范定义包结构二、 按顺序添加struts2、spring、hibernate框架1、 添加struts2框架a、 将struts2框架所需要的jar文件(包括与spring整个插件jar包)配置到工程中;b、 将struts2框架的配置文件模板复制粘贴到src中;2、 添加spring框架图-1注意:选择的Spring Library包括(AOP、Core、Persist
2、ence Core、Web);图-23、 添加hibernate框架图-1图-2图-3图-4图-5通过以上5个步骤,已经在当前项目中添加SSH框架,但是发现spring配置文件applicationContext.xml文件出错,因为在SSH整合中使用到了数据源DataSource,缺少对象的jar包;找到对应的jar 包配置到当前项目中即可;三、 配置SSH框架1、 web.xml文件中配置struts2核心控制器StrutsPrepareAndExecuteFilter(注:在添加struts1框架时,工具会自动配置struts1核心控制器);2、 在web.xml文件中配置用于加载Spr
3、ing配置文件的上下文加载监听器3、 在struts.xml文件中配置常量(设置字符集编码和业务控制器的创建管理方式)4、 通过工具生成数据库表对应的实体类和映射文件注意:生成完毕后,实体类和hbm映射文件不一定位于com.mstanford.entity和com.mstanford.hbm包中,需要手动修改(包括在*.hbm.xml文件中类路径和applicationContext文件指定的映射文件路径)四、 完成用户登陆功能1、 在com.mstanford.dao包中定义实现持久化的接口IBaseDAOpackage com.mstanford.dao;import java.io.Se
4、rializable;import java.util.List;/* * 定义通用的持久化操作接口 * * author Qct 2013-7-1 */public interface IBaseDAO /* * 保存对象 * * param object */ public void save(Object object); /* * 删除对象 * * param object */ public void delete(Object object); /* * 修改对象 * * param object */ public void update(Object object); /* *
5、 根据对象标识获取指定类的对象 * * param clazz * param id * return */ public Object get(Class clazz, Serializable id); /* * 执行hql查询 * * param hql * return */ public List query(String hql,Objectparams); /* * 执行hql查询,带分页功能 * * param hql * param pageSize * param pageNo * return */ public List query(String hql,Objectp
6、arams, int pageSize, int pageNo); /* * 执行SQL(查询) * * param sql * return */ public List find(String sql,Objectparams); /* * 执行SQL(insert、delete、update) * * param sql */ public void execute(String sql, Object params); /* * 调用存储过程 * * param sql * param params * return */ public Object call(String sql,
7、Object params);2、 在com.mstanford.dao包中定义抽象类BaseDAO继承HibernateDAOSupport类并实现持久化通用接口IBaseDAOpackage com.mstanford.dao;import java.io.Serializable;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.SQLException;import java.util.List;import org.hibernate.HibernateException;impo
8、rt org.hibernate.Query;import org.hibernate.SQLQuery;import org.hibernate.Session;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class BaseDAO extends HibernateDaoSupport implements IBaseDAO public void call(St
9、ring sql, Object params)throws SQLException Connection conn=this.getSession().connection(); CallableStatement stm=conn.prepareCall(sql); if(params!=null & params.length0) for(int index=0;index0) for(int index=0;indexparams.length;index+) sqlQuery.setParameter(index, paramsindex); return sqlQuery.exe
10、cuteUpdate(); ); public List find(final String sql,final Object params) / TODO Auto-generated method stub return this.getHibernateTemplate().executeFind(new HibernateCallback() public List doInHibernate(Session session) throws HibernateException, SQLException / TODO Auto-generated method stub SQLQue
11、ry sqlQuery=session.createSQLQuery(sql); if(params!=null & params.length0) for(int index=0;indexparams.length;index+) sqlQuery.setParameter(index, paramsindex); return sqlQuery.list(); ); public Object get(Class clazz, Serializable id) return this.getHibernateTemplate().load(clazz, id); public List
12、query(final String hql,final Object params) / TODO Auto-generated method stub return this.getHibernateTemplate().executeFind(new HibernateCallback() public List doInHibernate(Session session) throws HibernateException, SQLException Query query=session.createQuery(hql); if(params!=null & params.lengt
13、h0) for(int index=0;indexparams.length;index+) query.setParameter(index, paramsindex); return query.list(); ); public List query(final String hql,final Object params, final int pageSize,final int pageNo) / TODO Auto-generated method stub return this.getHibernateTemplate().executeFind(new HibernateCa
14、llback() public List doInHibernate(Session session) throws HibernateException, SQLException Query query=session.createQuery(hql); if(params!=null & params.length0) for(int index=0;indexparams.length;index+) query.setParameter(index, paramsindex); query.setFirstResult(pageNo-1)*pageSize); query.setMa
15、xResults(pageSize); return query.list(); ); public void save(Object object) / TODO Auto-generated method stub this.getHibernateTemplate().save(object); public void update(Object object) / TODO Auto-generated method stub this.getHibernateTemplate().update(object); 3、 定义用于对用户操作的持久化类UserDAO,继承BaseDAOpa
16、ckage com.mstanford.dao;public class UserDAO extends BaseDAO4、 在com.mstanford.service包中定义业务层类的接口UserServicepackage com.mstanford.service;import com.mstanford.entity.User;public interface UserService /* * 用户登陆 * param userName * param userPwd * return */ public User login(String userName,String userP
17、wd);5、 在com.mstanford.service.impl包中定义业务层类UserServiceImpl实现接口UserServicepackage com.mstanford.service.impl;import java.util.List;import com.mstanford.dao.UserDAO;import com.mstanford.entity.User;import com.mstanford.service.UserService;public class UserServiceImpl implements UserService private User
18、DAO userDAO; public UserDAO getUserDAO() return userDAO; public void setUserDAO(UserDAO userDAO) this.userDAO = userDAO; public User login(String userName, String userPwd) String hql=from User where userName=? and userPwd=?; Object params=userName,userPwd; List list=(List)userDAO.query(from User whe
19、re userName=? and userPwd=?, params); if(list=null | list.size()=0) return null; else return list.get(0); 6、 在com.mstanford.action包中定义业务控制器Action父类BaseAction;package com.mstanford.action;import java.util.Map;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext
20、;import com.opensymphony.xwork2.ActionContext;public abstract class BaseAction public Map getRequest() return (Map)ActionContext.getContext().get(request); public Map getSession() return ActionContext.getContext().getSession(); public Map getApplication() return ActionContext.getContext().getApplica
21、tion(); public HttpServletResponse getResponse() return ServletActionContext.getResponse(); 7、 在com.mstanford.action包中定义业务控制器Action负责处理登陆请求的类UserAction类package com.mstanford.action;import com.mstanford.entity.User;import com.mstanford.service.UserService;public class UserAction extends BaseAction pr
22、ivate UserService userService; private User user; public UserService getUserService() return userService; public void setUserService(UserService userService) this.userService = userService; public User getUser() return user; public void setUser(User user) this.user = user; public String login() User
23、 user=userService.login(this.user.getUserName(), this.user.getUserPwd(); if(user=null) return err; else /保存当前登陆的用户对象 this.getSession().put(user, user); return suc; 8、 在applicationContext.xml文件中配置受管理的Bean(包括Dao、Service、Action)注:程序中各层的依赖关系如下struts业务控制器Action业务层Service持久层DAOSessionFactoryDataSource 9、 在struts.xml文件中配置业务控制器Action10、 准备登陆页面index.jsp和err.jsp、suc.jsp页面
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1