S2SH(Struts2 + Spring + Hibernate)整合之配置文件
1、Hibernate 3.2(7个):
hibernate3.jar 核心库,必须
jta.jar 必须
commons-logging.jar 必须
commons-collections.jar 必须
antlr.jar 必须
dom4j.jar 读写xml 必须
cglib-2.1.3.jar 必须
一下两个是cglib的依赖库 也是必须的
asm-attrs.jar
2、spring2.0 核心jar(5个)
spring.jar
aspectj/aspectjrt.jar、aspectjweaver.jar
jakarta-commons/commons-logging.jar
log4j/log4j-1.2.14.jar
3、struts2必须JAR包(6个):
struts2-spring-plugin-2.0.11.2.jar
xwork-2.0.5.jar
struts2-core-2.0.11.2.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
4、spring2.5必须JAR包(5个):
spring.jar
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar
1.web.xml文件配置如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <!-- 指定spring的配置文件,默认从web根目录寻找配置文件,我们可以通过spring提供的classpath:前缀指定从类路径下寻找 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:beans.xml</param-value>
- </context-param>
- <!-- 对Spring容器进行实例化,并把实例存放在application的属性里 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- 配置字符编码过滤器(解决乱码问题) -->
- <filter>
- <filter-name>encoding</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>encoding</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!-- 解决因session关闭而导致的延迟加载例外的问题 -->
- <filter>
- <filter-name>OpenSessionInViewFilter</filter-name>
- <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>OpenSessionInViewFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!-- 配置Struts2的过滤器-->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
2.struts.xml配置如下:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <!-- 该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。
- 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 -->
- <constant name="struts.action.extension" value="do"/>
- <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
- <constant name="struts.serve.static.browserCache" value="false"/>
- <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->
- <constant name="struts.configuration.xml.reload" value="true"/>
- <!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
- <constant name="struts.devMode" value="true" />
- <!-- 默认的视图主题 -->
- <constant name="struts.ui.theme" value="simple" />
- <constant name="struts.objectFactory" value="spring"/>
- <package name="xwuxin" namespace="/person" extends="struts-default">
- <global-results>
- <result name="message">/WEB-INF/page/message.jsp</result>
- </global-results>
- <action name="list" class="personListAction">
- <result name="list">/WEB-INF/page/persons.jsp</result>
- </action>
- <action name="manage_*" class="personManageAction" method="{1}">
- <result name="add">/WEB-INF/page/addperson.jsp</result>
- </action>
- </package>
- </struts>
3.beans.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-2.5.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
- <context:annotation-config/>
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
- <property name="url" value="jdbc:mysql://localhost:3306/ss2h?useUnicode=true&characterEncoding=UTF-8"/>
- <property name="username" value="root"/>
- <property name="password" value="chx/1988" />
- <!-- 连接池启动时的初始值 -->
- <property name="initialSize" value="1"/>
- <!-- 连接池的最大值 -->
- <property name="maxActive" value="500"/>
- <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接释放一部分,一直减少到maxIdle为止 -->
- <property name="maxIdle" value="2"/>
- <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请一些连接,以避免洪峰来时再申请而造成的性能开销 -->
- <property name="minIdle" value="1"/>
- </bean>
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- <property name="mappingResources">
- <list>
- <value>cn/itcast/bean/Person.hbm.xml</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <value>
- hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
- hibernate.hbm2ddl.auto=update
- hibernate.show_sql=false
- hibernate.format_sql=false
- hibernate.cache.use_second_level_cache=true
- hibernate.cache.use_query_cache=false
- hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
- </value>
- </property>
- </bean>
- <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory"/>
- </bean>
- <aop:config>
- <aop:pointcut id="tran" expression="execution(* cn.itcast.service..*.*(..))"/>
- <aop:advisor advice-ref="txAdvice" pointcut-ref="tran"/>
- </aop:config>
- <tx:advice id="txAdvice" transaction-manager="txManager">
- <tx:attributes>
- <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/>
- <tx:method name="*"/>
- </tx:attributes>
- </tx:advice>
- <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"/>
- <bean id="personListAction" class="cn.itcast.action.PersonListAction" scope="prototype"/>
- <bean id="personManageAction" class="cn.itcast.action.PersonManageAction" scope="prototype"/>
- </beans>
4.ehcache.xml配置如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- defaultCache节点为缺省的缓存策略
- maxElementsInMemory 内存中最大允许存在的对象数量
- eternal 设置缓存中的对象是否永远不过期
- overflowToDisk 把溢出的对象存放到硬盘上
- timeToIdleSeconds 指定缓存对象空闲多长时间就过期,过期的对象会被清除掉
- timeToLiveSeconds 指定缓存对象总的存活时间
- diskPersistent 当jvm结束是是否持久化对象
- diskExpiryThreadIntervalSeconds 指定专门用于清除过期对象的监听线程的轮询时间
- -->
- <ehcache>
- <diskStore path="D:/cache"/>
- <defaultCache maxElementsInMemory="1000" eternal="false" overflowToDisk="true"
- timeToIdleSeconds="120"
- timeToLiveSeconds="180"
- diskPersistent="false"
- diskExpiryThreadIntervalSeconds="60"/>
- <cache name="cn.itcast.bean.Person" maxElementsInMemory="100" eternal="false"
- overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="600" diskPersistent="false"/>
- </ehcache>
5.Person.hbm.xml配置文件如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="cn.itcast.bean">
- <class name="Person" table="person">
- <cache usage="read-write" region="cn.xwuxin.bean.Person"/>
- <id name="id">
- <generator class="native"/>
- </id>
- <property name="name" length="10" not-null="true"/>
- </class>
- </hibernate-mapping>