struts2+spring+hibernate整合

来源:互联网 发布:视频特效制作软件 编辑:程序博客网 时间:2024/05/01 21:53
                                                                       struts2+spring3+hibernate4的整合[详解]



最近在学习SSH整合过程中出现了许多小问题!为了以后的学习SSH整合的朋友少走弯路,所以总结了一篇文档!但愿能对大家有所帮助!

好了,废话不多说!下面我们来实现一个用ssh框架完成对一本书的保存~


一、开发工具


开发工具工具版本eclipse4.4.9M6tomcat7.0jdk1.8


二、项目开发


1、首先创建web项目!



2、创建好项目,我们开始导入项目需要的jar包,主要是ssh框架的jar包,下面我们对其详细介绍!

a、首先导入与数据库连接的支持包


b、导入数据库连接池c3p0需要的jar包

 


c、导入spring3.5的支持包 


spring支持jar包的名称jar包的说明spring-aop.jar    spring的面向切面编程,提供AOP(面向切面编程)的实现spring-aspects.jar  spring提供对Aspectj框架的整合spring-beans.jarspringIOC(控制反转和依赖注入)的基础实现spring-context.jarspring提供在基础IOC功能上的扩展服务spring-core.jarspring的核心工具包spring-expression.jarspring表达式语言spring-jdbc.jarspring对jdbc的简单封装spring-orm.jarspring整合第三方ORM框架(如hibernte,ibatis)的支持包spring-struts.jarspring整合struts时候的支持spring-tx.jarspring提供事务管理功能spring-web.jar                                                                             spring提供web应用开发时

,用到spring框架时所需要的核心类,包括自动载入Web ApplicationContext特性的类,Struts与JSF集成类,文件上传的支持类,Filter类和大量工具辅助类


d导入struts2的支持包


struts支持jar包的名称jar包的说明asm-3.3.jarjava字节码框架asm-commons-3.3.jar同上asm-tree-3.3.jar同上commons-fileupload-1.3.jarstruts2文件上传的支持包commons-io-2.0.1.jarIO工具类的封装commons-lang3-3.1.jar为java.lang包提供扩展freemarker-2.3.19.jar表现层框架,定义了struts2的可是组件主题javassist-3.11.0.GA.jar代码生成工具,hibernate在运行时扩展java类和实现ognl-3.0.6.jar                                                       对象图导航语言(Object  Graph Navigation Language),struts2框架使用的一种表达式语言struts2-core-2.3.15.3.jarstruts2的核心库xwork-core-2.3.15.3.jarwebwork核心库struts2-spring-plugin-2.3.15.3.jar这是为struts与spring整合提供的支持包

e、导入hibernate4.2的jar包



hibernate支持jar包的名称jar包的说明antlr-2.7.7.jar这是一个语言转化工具,Hibernate利用它实现HQL到SQL的转换dom4j-1.6.1.jardom4j    xml  解析器hibernate-commons-annotation-4.0.2.Final.jar支持annotationhibernate-core-4.2.12.Final.jarhibernate4.2的核心库hibernate-jpa-2.0-api-1.0.1.Final.jarhibernate APIjavassist-3.18.1-GA.jar代码生成器,Hibernate用它在运行时扩展java类和实现,同cglibjboss-logging-3.1.0.GA.jar日志jboss-transaction-api_1.1_spec-1.0.1Final.jar事务处理

3、现在我们开始创建实体类

-------------------------------------------------------------------------model-----------------------------------------------------------------------------------------------------


package com.phome.modal;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;/** * 这是实体类 * @author 欢 * */@Entitypublic class User {private int id;private String name;@Id@GeneratedValue(strategy=GenerationType.AUTO)public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}



---------------------------------------------------------------------Action----------------------------------------------------------------------------------------------------------

package com.phome.action;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.stereotype.Controller;import com.opensymphony.xwork2.ActionSupport;import com.phome.IService.ISaveService;import com.phome.model.Book;/** * 这是struts调用的Action类 * @author 欢 * */@Controllerpublic class SaveAction extends ActionSupport {/** * 唯一标识 */private static final long serialVersionUID = 1L;private ISaveService saveService;private Book book;public ISaveService getSaveService() {return saveService;}@Autowiredpublic void setSaveService(ISaveService saveService) {this.saveService = saveService;}public Book getBook() {return book;}public void setBook(Book book) {this.book = book;}/** * action的保存书籍方法 * @return */public String save () {System.out.println("Action进入....");//调用SaveService的save(Book book)方法saveService.save(book);return SUCCESS;}}


----------------------------------------------------------IDAO----------------------------------------------------------------------------


package com.phome.dao;import com.phome.modal.User;public interface IAddDAO {public int add (User user);}


------------------------------------------------------------DAO--------------------------------------------------------------------------------


package com.phome.dao.imp;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.phome.dao.IAddDAO;import com.phome.modal.User;/** * 这是一个DAO持久类 * @author 欢 * */@Repositorypublic class AddDAO implements IAddDAO{private SessionFactory sessionFactory;public SessionFactory getSessionFactory() {return sessionFactory;}@Autowiredpublic void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}@Overridepublic int add(User user) {System.out.println("addDAO()方法进入....");Session session = (Session) sessionFactory.getCurrentSession();session.save(user);return 0;}}


---------------------------------------------------------------------IService--------------------------------------------------------------------------------------------------


package com.phome.service;import com.phome.modal.User;public interface IAddService {public int add(User user);}


------------------------------------------------------------------Service----------------------------------------------------------------------------------------


package com.phome.service.imp;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.phome.dao.IAddDAO;import com.phome.modal.User;import com.phome.service.IAddService;/** * 这是业务类 * @author 欢 * */@Servicepublic class AddService implements IAddService{private IAddDAO addDAO;public IAddDAO getAddDAO() {return addDAO;}@Autowiredpublic void setAddDAO(IAddDAO addDAO) {this.addDAO = addDAO;}@Overridepublic int add(User user) {int num = 0;System.out.println("service进入--〉");addDAO.add(user);return num;}}







4、我们开始创建spring.xml,配置spring.xml文件

a、创建spring.xml文件



b、开始配置spring.xml文件


<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- spring支持annotation --> <context:annotation-config></context:annotation-config>  <!-- spring 自动扫描 --> <context:component-scan base-package="com.phome"></context:component-scan>  <!-- 配置数据库dataSource --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1/hibernate_test" /> <property name="user" value="root" /> <property name="password" value="admin" /> </bean>  <!-- 配置hibernateSessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property>  <!-- 配置需要映射的实体类 --> <property name="annotatedClasses"> <list> <value>com.phome.model.Book</value> </list> </property>  <!-- 配置hibernate的一些属性 --> <property name="hibernateProperties"> <value> hibernate.show_sql=true hibernate.format_sql=true hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext hibernate.hbm2ddl.auto=update </value> </property> </bean> <!-- 配置事务管理 --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="save*" propagation="REQUIRED" read-only="false" /><tx:method name="*" read-only="true" /></tx:attributes></tx:advice><aop:config><aop:pointcut id="allManagerMethod"expression="execution(public * com.phome.IService.imp.*.*(..))" /><aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" /></aop:config></beans>




5、创建struts2.xml文件,并配置strurs2.xml文件

a、创建struts2.xml文件



b、配置struts2.xml文件


<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><!-- 打开struts开发开关,显示更多人性化提示信息 --><constant name="struts.devMode" value="false"></constant><!-- 修改编码 --><constant name="struts.il8n.encoding" value="UTF-8" ></constant><!-- 将struts对action的管理权托管给spring --><constant name="struts.objectFactory" value="spring"></constant><!-- 配置action --><package name="action" extends="struts-default" namespace="/action"><action name="*_*" class="com.phome.action.{1}Action" method="{2}"><result name="success">/success.jsp</result></action></package></struts>



6、配置web.xml文件,配置spring,struts2的启动


<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>ssh_test</display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <!-- 配置spring的启动 -->  <!-- 1、加载spring的配置文件 -->  <context-param>  <param-name>contextConfigLocation</param-name>  <param-value>WEB-INF/spring/spring.xml</param-value>  </context-param>    <!-- 2、通过监听器启动spring -->  <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>    <!-- 配置struts2的启动 -->  <!-- 这是第一种配置Struts2的方法 -->  <!-- <filter>  <filter-name>struts2</filter-name>  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  <init-param>  <param-name>config</param-name>  <param-value>  struts-default.xml,  struts-plugin.xml,  ../struts2/struts2.xml  </param-value>  </init-param>  </filter>    <filter-mapping>  <filter-name>struts2</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping> -->    <!-- 这是第二种配置Struts2的方法 -->  <!-- 1、这里配置一些struts2启动前加载的配置文件 -->  <filter>  <filter-name>struts2p</filter-name>  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>  <init-param>  <param-name>config</param-name>  <param-value>  struts-default.xml,  struts-plugin.xml,  ../struts2/struts2.xml  </param-value>  </init-param>  </filter>    <filter-mapping>  <filter-name>struts2p</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>    <!-- 2、配置第三方过滤器 -->  <!-- 在这里我们可以配置自己的过滤器,比如编码过滤器等 -->    <!-- 3、配置Struts2的启动过滤器 -->  <filter>  <filter-name>struts2e</filter-name>  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>  </filter>    <filter-mapping>  <filter-name>struts2e</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  </web-app>


7、创建两个测试页面,分别是index.jsp和success.jsp


-----------------------------------------------index.jsp------------------------------------------------------------

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h1>填写书籍信息:</h1><form action="${pageContext.request.contextPath }/action/Save_save" method="post"><p>书籍的名称:</p><input id="book.name" name="book.name" type="text" value="请输入书籍的名称..." /><br /><p>书籍的价格:</p><input id="book.price" name="book.price" type="text" value="请输入书籍的价格..." /><br /><br /><input type="submit" value="提交" /></form></body></html>


-----------------------------------------------success.jsp------------------------------------------------------------


<%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030"><title>Insert title here</title></head><body><h1>添加书籍成功!</h1></body></html>


8、测试


启动项目,在浏览器进入



输入书名称,价格,点击提交




页面成功跳转!  

控制台信息如下:






sql语言正确,数据添加成功!项目执行结束。。。


希望对大家有所帮助!谢谢~~


0 0
原创粉丝点击