SSH整合
DataSource-àSessionFactory-àHibenateTemplate-àDao-àService-àAction
一. Hibernate和Spring进行整合
1. 添加hibernate和spring依赖的jar文件
antlr-2.7.7.jar
aopalliance.jar
aspectjweaver.jar
c3p0-0.9.5.2.jar
classmate-1.3.0.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
hibernate-c3p0-5.2.10.Final.jar
hibernate-commons-annotations-5.0.1.Final.jar
hibernate-core-5.2.10.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-2.0.3.Final.jar
javassist-3.20.0-GA.jar
jboss-logging-3.3.0.Final.jar
jboss-transaction-api_1.2_spec-1.0.1.Final.jar
mchange-commons-java-0.2.11.jar
mysql-connector-java-5.1.40.jar
spring-aop-4.3.9.RELEASE.jar
spring-aspects-4.3.9.RELEASE.jar
spring-beans-4.3.9.RELEASE.jar
spring-context-4.3.9.RELEASE.jar
spring-context-support-4.3.9.RELEASE.jar
spring-core-4.3.9.RELEASE.jar
spring-expression-4.3.9.RELEASE.jar
spring-instrument-4.3.9.RELEASE.jar
spring-instrument-tomcat-4.3.9.RELEASE.jar
spring-jdbc-4.3.9.RELEASE.jar
spring-jms-4.3.9.RELEASE.jar
spring-messaging-4.3.9.RELEASE.jar
spring-orm-4.3.9.RELEASE.jar
spring-oxm-4.3.9.RELEASE.jar
spring-test-4.3.9.RELEASE.jar
spring-tx-4.3.9.RELEASE.jar
spring-web-4.3.9.RELEASE.jar
spring-webmvc-4.3.9.RELEASE.jar
spring-webmvc-portlet-4.3.9.RELEASE.jar
spring-websocket-4.3.9.RELEASE.jar
2. 编写实体类和映射文件
package cn.zzsxt.ssh.entity;
public class Userinfo { private int userId; private String userName; private String userPass; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPass() { return userPass; } public void setUserPass(String userPass) { this.userPass = userPass; } @Override public String toString() { return "Userinfo [userId=" + userId + ", userName=" + userName + ", userPass=" + userPass + "]"; }
} |
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
|
3. 编写DAO及其实现类
package cn.zzsxt.ssh.dao;
import java.util.List; import cn.zzsxt.ssh.entity.Userinfo; public interface UserinfoDao { public List public Userinfo findById(int userId); public int add(Userinfo user); public int update(Userinfo user); public int delete(int userId);
} |
package cn.zzsxt.ssh.dao.impl;
import java.util.List;
import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate5.HibernateTemplate;
import cn.zzsxt.ssh.dao.UserinfoDao; import cn.zzsxt.ssh.entity.Userinfo;
public class UserinfoDaoImpl implements UserinfoDao { private HibernateTemplate hibernateTemplate; public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; }
@Override public List // List return hibernateTemplate.loadAll(Userinfo.class); }
@Override public Userinfo findById(int userId) { return hibernateTemplate.get(Userinfo.class, userId); }
@Override public int add(Userinfo user) { int count=0; try { hibernateTemplate.save(user); count=1; } catch (DataAccessException e) { e.printStackTrace(); } return count; }
@Override public int update(Userinfo user) { int count=0; try { hibernateTemplate.update(user); count=1; } catch (DataAccessException e) { e.printStackTrace(); } return count; }
@Override public int delete(int userId) { int count=0; try { Userinfo user = hibernateTemplate.get(Userinfo.class, userId); hibernateTemplate.delete(user); count=1; } catch (DataAccessException e) { e.printStackTrace(); } return count; }
} |
4. 编写Service及其实现类
package cn.zzsxt.ssh.service;
import java.util.List;
import cn.zzsxt.ssh.entity.Userinfo;
public interface UserinfoService { public List public Userinfo findById(int userId); public int add(Userinfo user); public int update(Userinfo user); public int delete(int userId); } |
package cn.zzsxt.ssh.service.impl;
import java.util.List;
import cn.zzsxt.ssh.dao.UserinfoDao; import cn.zzsxt.ssh.entity.Userinfo; import cn.zzsxt.ssh.service.UserinfoService;
public class UserinfoServiceImpl implements UserinfoService { private UserinfoDao userinfoDao;
public void setUserinfoDao(UserinfoDao userinfoDao) { this.userinfoDao = userinfoDao; }
@Override public List return userinfoDao.findAll(); }
@Override public Userinfo findById(int userId) { return userinfoDao.findById(userId); }
@Override public int add(Userinfo user) { return userinfoDao.add(user); }
@Override public int update(Userinfo user) { return userinfoDao.update(user); }
@Override public int delete(int userId) { return userinfoDao.delete(userId); }
} |
5. 在src下新建db.properties(可选)
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/hibernate username=root password=root |
6. 在src下新建spring的配置文件applicationContext.xml
DataSource-àSessionFactory-àHibernateTemplate-àDao-àService
声明式事务: HibernateTransactionManager--àtxAdvice-àPointCut-àAdvisor
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
|
二. Struts和Spring整合
1. 添加struts2依赖的jar文件和struts2-spring-plugin.jar
2. 在web.xml中配置监听器ContextLoaderListener(解析spring配置文件)和struts2的核心过滤器
|
3. 编写业务逻辑Action
package cn.zzsxt.ssh.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
import cn.zzsxt.ssh.entity.Userinfo; import cn.zzsxt.ssh.service.UserinfoService;
public class UserinfoAction extends ActionSupport implements ServletRequestAware{ private UserinfoService userinfoService; private HttpServletRequest request; private Userinfo user;
public Userinfo getUser() { return user; }
public void setUser(Userinfo user) { this.user = user; }
public void setUserinfoService(UserinfoService userinfoService) { this.userinfoService = userinfoService; }
public String list() throws Exception { List request.setAttribute("list", list); return "list"; }
public String add() throws Exception { int count = userinfoService.add(user); if(count>0){ return this.SUCCESS; } return this.ERROR; }
@Override public void setServletRequest(HttpServletRequest arg0) { this.request=arg0; } } |
4. 在spring配置文件中配置业务逻辑Action,为业务逻辑Action注入service
|
5. 在src下添加struts的配置文件并配置
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> |
6. 编写页面
List.jsp
|
Add.jsp
|