Struts2+Hibernate+Spring整合

来源:互联网 发布:超次元矩阵闪退 编辑:程序博客网 时间:2024/06/07 02:44

最近做了一个小小的整合项目,下面和大家分享一下原工程。


这是一个简单的商品添加系统。非常的简单,比较适合想我一样刚刚接触SSH框架的朋友看看。

一、导入Spring、Struts2、Hibernate需要的包和mysql,c3p0需要的jar包;

链接:http://pan.baidu.com/s/1dF67r3N 密码:x2xy

二、引入Struts.xml,log4j.properties,applicatioContext.xml,文件

三、配置web.xml文件:

1.配置需要的监听器和过滤器;

四、配置applicationContext.xml文件:

1.配置外部数据库连接文件(jdbc.properties);

2.在ApplicationContext.xml中引入jdbc.properties文件;

3.配置连接池信息;

4.配置Hibernate相关属性:

1)注入连接池;

2)配置相关属性(数据库方言,显示sql语句,格式化输出sql语句,创建数据库的方式);

3)载入映射文件;

五、配置Action类

六、配置业务层的类(service)

七、配置DAO的类

八、配置事务管理器并开启事务



以下是对应配置文件:

ApplicationContext.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/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.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"><!-- 引入外部属性文件 --><context:property-placeholder location="classpath:jdbc.properties" /><!-- 配置连接池 c3p0 --><bean id="dataSoure" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driverClass}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!-- 配置Hibernate的相关属性 --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><!-- 注入连接池 --><property name="dataSource" ref="dataSoure" /><!-- 配置Hibernate的属性 --><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- 加载Hibernate的映射文件 --><property name="mappingResources"><list><value>com/model/Product.hbm.xml</value></list></property></bean><!-- 配置Action的类 --><bean id="productAction" class="com.action.ProductAction" scope="prototype"><!-- 手动注入service --><property name="productService" ref="productService" /></bean><!-- 配置业务层的类 --><bean id="productService" class="com.service.ProductService"><property name="productDAO" ref="productDAO" /></bean><!-- 配置DAO的类 --><bean id="productDAO" class="com.dao.ProductDAO"><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/></bean><!-- 开启注解事务 --><tx:annotation-driven transaction-manager="transactionManager"/></beans>
jdbc.properties代码:

jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/sshjdbc.username=rootjdbc.password=123456


log4j.properties代码:

### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c:%L - %m%n### direct messages to file hibernate.log ####log4j.appender.file=org.apache.log4j.FileAppender#log4j.appender.file.File=hibernate.log#log4j.appender.file.layout=org.apache.log4j.PatternLayout#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=warn, stdout#log4j.logger.org.hibernate=info#log4j.logger.org.hibernate=debug### log HQL query parser activity#log4j.logger.org.hibernate.hql.ast.AST=debug### log just the SQL#log4j.logger.org.hibernate.SQL=debug### log JDBC bind parameters ####log4j.logger.org.hibernate.type=info#log4j.logger.org.hibernate.type=debug### log schema export/update ###log4j.logger.org.hibernate.tool.hbm2ddl=debug### log HQL parse trees#log4j.logger.org.hibernate.hql=debug### log cache activity ####log4j.logger.org.hibernate.cache=debug### log transaction activity#log4j.logger.org.hibernate.transaction=debug### log JDBC resource acquisition#log4j.logger.org.hibernate.jdbc=debug### enable the following line if you want to track down connection ###### leakages when using DriverManagerConnectionProvider ####log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

Struts代码:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="ssh" namespace="/" extends="struts-default"><action name="product_*" class="productAction" method="{1}"></action></package></struts>

web.xml代码:

<?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_2_5.xsd"id="WebApp_ID" version="2.5"><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- Struts2的框架的核心过滤器配置 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><display-name>ssh</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>

addProduct.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!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><s:form action="product_save" method="post" namespace="/" theme="simple"><table border="1" width="400"><tr><td>商品名称</td><td><s:textfield name="pname" /></td></tr><tr><td>商品价格</td><td><s:textfield name="price" /></td></tr><tr><td colspan="2"><input type ="submit" value="添加"/></td></tr></table></s:form></body></html>


ProductAction.java代码:

package com.action;import com.model.Product;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.service.ProductService;/* * 商品管理Action类 */public class ProductAction extends ActionSupport implements ModelDriven<Product>{private Product product = new Product();@Overridepublic Product getModel() {return product;}private ProductService productService;public void setProductService(ProductService productService) {this.productService = productService;}/** * 保存商品的执行方法save */public String save(){System.out.println("save...");productService.save(product);return NONE;}}

ProductDAO.java代码:

package com.dao;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.model.Product;/* * 商品管理DAO类 */public class ProductDAO extends HibernateDaoSupport{public void save(Product product) {System.out.println("dao中的save.");this.getHibernateTemplate().save(product);}}

Product.java

package com.model;public class Product {private Integer pid;private String pname;private Double price;public Integer getPid() {return pid;}public void setPid(Integer pid) {this.pid = pid;}public String getPname() {return pname;}public void setPname(String pname) {this.pname = pname;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public Product(Integer pid, String pname, Double price) {super();this.pid = pid;this.pname = pname;this.price = price;}public Product(){}@Overridepublic String toString() {return "Procduct [pid=" + pid + ", pname=" + pname + ", price=" + price+ "]";}}

Product.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2017-3-5 11:44:46 by Hibernate Tools 3.4.0.CR1 --><hibernate-mapping><class name="com.model.Product" table="PRODUCT"><id name="pid" column="PID"><generator class="native" /></id><property name="pname" column="PNAME" length="20"/><property name="price" column="PRICE" /></class></hibernate-mapping>

ProductService.java

package com.service;import org.springframework.transaction.annotation.Transactional;import com.dao.ProductDAO;import com.model.Product;@Transactionalpublic class ProductService {private ProductDAO productDAO;public void setProductDAO(ProductDAO productDAO) {this.productDAO = productDAO;}/** * 业务层保存商品的方法 * @param product */public void save(Product product) {System.out.println("save...service");productDAO.save(product);}}




0 0