1. 最近准备开发新项目,打算整合一个SSH作为基础模板,最初的设想是使用SSH的,后期决定想尝试一下spring mvc3.2+ hibernate4.2+spring3.2 core + ehcache + shiro 作为开发架构,不过先提供SSH集成的方案作为模板,以方便以后用到可以直接使用(struts2.3.12+ hibernate4.2+spring3.2 core + ehcache + shiro) 第一次写博客文章, 写得不太好, 在此作为养成一个写博客习惯开始吧。
2.首选到官网上面把SSH相关的文件下载下来并解压,我下载的都是带文档版本的。
3. 在eclipse中创建一个java web 项目, 我使用的是myeclipse6.0 + tomcat6。
4. 在解压了spring-framework-3.2.2.RELEASE-dist.zip之后有个libs目录, 把下面的jar文件都拷贝到WEB-INF/lib 目录下面, 以-source.jar 或者-javadoc.jar结尾的不用拷贝,都是相关jar包的文档和源码,有几个jar文件我没有拷贝,因为考虑到太多没用jar包,没有使用到相关功能,如果你怕麻烦,你也可以全部拷贝。为了使用aop技术还得加入下面3个jar文件,spring3.2里面没有自带这3个jar包, 我是从spring 2.5.6的发布包里面拷贝出来的。
aopalliance.jar aspectjrt.jar aspectjweaver.jar
5. 在解压了hibernate-release-4.2.0.Final.zip之后有个lib目录, 把required目录下所有jar文件都拷贝到WEB-INF/lib 目录下面(这个是hibernate的核心文件),项目中使用到了数据连接池和ehcache, 需要把optional目录下的c3p0和ehcache两个目录下所有jar包一并拷贝到WEB-INF/lib 目录下面,如果你的项目中没有使用到,可以不加入。
在lib目录下面有个jpa目录,也把hibernate-entitymanager-4.2.0.Final.jar文件拷贝到WEB-INF/lib 目录下面, 用到jpa的注解来映射实体类到数据库的, 还得把日志相关的jar包拷如, commons-logging-1.1.1.jar log4j-1.2.17.jar slf4j-api-1.7.5.jar slf4j-log4j12-1.7.5.jar, 上面hibernate4.2 lib目录ehcache包含了一个slf4j-api-1.6.1.jar 需要删掉,我替换成新版版本了。 我使用的mysql数据库 把相关驱动包拷如 mysql-connector-java-5.0.8-bin.jar
如果使用新版本替换,记住删除slf4j-api-1.6.1.jar 否则冲突
6. 整合spring和hibernate, 此处把hibernate交给spring来管理,在项目src下面添加spring的配置文件applicationContext-Root.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- 开启aop注解支持 --> <aop:aspectj-autoproxy/> <!-- 开启注解bean扫描 --> <context:component-scan base-package="com.lysoft"/> <!-- 数据源配置 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh2?useUnicode=true&characterEncoding=UTF-8"/> <property name="user" value="root"/> <property name="password" value="textliang2010"/> <!--连接池中保留的最小连接数。--> <property name="minPoolSize" value="2" /> <!--连接池中保留的最大连接数。--> <property name="maxPoolSize" value="100" /> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。--> <property name="maxIdleTime" value="1800" /> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。--> <property name="acquireIncrement" value="2" /> <property name="maxStatements" value="0" /> <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。--> <property name="initialPoolSize" value="2" /> <!--每60秒检查所有连接池中的空闲连接。--> <property name="idleConnectionTestPeriod" value="1800" /> <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --> <property name="acquireRetryAttempts" value="30" /> <!-- 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试 获取连接失败后该数据源将申明已断开并永久关闭。Default: false --> <property name="breakAfterAcquireFailure" value="true" /> <!-- 因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable 等方法来提升连接测试的性能。Default: false --> <property name="testConnectionOnCheckout" value="false" /> </bean> <!-- 配置SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="packagesToScan" value="com.lysoft.bean"/> <property name="hibernateProperties"> <props> <!-- 指定数据库的方言 --> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <!-- 启动应用时,是否根据Hibernate映射自动创建数据表 --> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.jdbc.fetch_size">50</prop> <prop key="hibernate.jdbc.batch_size">30</prop> <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop> </props> </property> </bean> <!-- 定义事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-- 配置事务的传播特性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <!-- hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到 --> <tx:method name="get*" propagation="REQUIRED" read-only="true" /> <tx:method name="count*" propagation="REQUIRED" read-only="true" /> <tx:method name="find*" propagation="REQUIRED" read-only="true" /> <tx:method name="list*" propagation="REQUIRED" read-only="true" /> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice> <!-- 哪些类的哪些方法参与事务 --> <aop:config> <!-- 只对业务逻辑层实施事务 --> <aop:pointcut id="serviceMethods" expression="execution(* com.lysoft.service..*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/> </aop:config> </beans>
7. 在src下面添加一个log4j.properties 文件, 方便查看DEBUG 日志。
log4j.rootLogger=DEBUG,console,logfile log4j.logger.com.lysoft=DEBUG #apche log log4j.logger.org.apache.commons=ERROR #spring log #log4j.logger.org.springframework=DEBUG log4j.logger.org.springframework.transaction=DEBUG #hibernate log log4j.logger.org.hibernate=DEBUG log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.hql=DEBUG log4j.logger.org.hibernate.jdbc=DEBUG log4j.logger.net.sf.ehcache=DEBUG log4j.logger.org.hibernate.cache=DEBUG log4j.logger.org.hibernate.transaction=DEBUG log4j.logger.org.hibernate.tool.hbm2ddl=DEBUG log4j.logger.org.hibernate.hql.internal.ast=ERROR #valuelist log log4j.logger.net.mlw.vlh=ERROR #c3p0 log log4j.logger.com.mchange.v2.resourcepool.BasicResourcePool=DEBUG #out log to console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%c:%L] - %m%n # Pattern to output the caller's file name and line number. log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%-4r %-5p [%d{yyyy-MM-dd HH:mm:ss}] %m%n #out log to file log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.File=${ssh.root}/WEB-INF/error.log log4j.appender.logfile.MaxFileSize=1024KB log4j.appender.logfile.MaxBackupIndex=10 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%c:%L] - %m%n
相关推荐
Struts2.12、Spring3.2和Hibernate4.2是Java开发中经典的MVC框架集合,常用于构建企业级Web应用。这个集成示例代码提供了如何将这三个框架协同工作的详细步骤,使得开发者能够更好地理解和掌握它们的交互机制。 ...
6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...
6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...
\contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...
(Swing+Hibernate+Oracle实现) 101 教学视频:2小时53分 3.1 开发背景 102 3.2 系统分析 102 3.3 系统设计 102 3.3.1 系统目标 102 3.3.2 系统功能结构 102 3.3.3 系统预览 104 3.3.4 业务流程图 105 3.3.5 文件夹...