SSH小项目整合的简单记录
第一步、导入sprint4、struts2和hibernate4的jar包
struts2的jar包
commons-fileupload-1.3.3.jar
commons-io-2.5.jar
commons-lang3-3.6.jar
freemarker-2.3.26-incubating.jar
javassist-3.20.0-GA.jar
log4j-api-2.10.0.jar
ognl-3.1.15.jar
struts2-core-2.5.17.jar
struts2-spring-plugin-2.5.17.jar(和spring4整合使用)
hibernate5的jar包
antlr-2.7.7.jar
dom4j-1.6.1.jar
geronimo-jta_1.1_spec-1.1.1.jar
hibernate-commons-annotations-5.0.1.Final.jar
hibernate-core-5.0.7.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-2.0.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.3.0.Final.jar
spring4的jar包
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
spring-jdbc-4.0.0.RELEASE.jar
spring-tx-4.0.0.RELEASE.jar
spring-web-4.0.0.RELEASE.jar
第二步、配置web.xml配置文件
<!-- 配置struts2的过滤器-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 设置spring的配置文件的位置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 设置spring4的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
第三步、配置spring的struts2的配置文件
spring配置文件applicationContext.xml
<!-- 定义数据源,这里使用的jdbc。也可以使用c3p0等连接池 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///blog"></property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>
<!-- 配置hibernate5 的 sessionFactory,交由spring来管理。不用在程序里自己new -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<!-- 配置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>
<!-- 配置关联关系映射文件 的方式之一 -->
<property name="mappingResources">
<list>
<value>com/tzblog/bean/Album.hbm.xml</value>
<value>com/tzblog/bean/Article.hbm.xml</value>
<value>com/tzblog/bean/Critique.hbm.xml</value>
<value>com/tzblog/bean/Me.hbm.xml</value>
<value>com/tzblog/bean/Photo.hbm.xml</value>
</list>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- struts2 的 Action 交由 spring来管理,在struts.xml中的action的class里填写bean id -->
<bean id="IndexAction" class="com.tzblog.action.IndexAction">
<property name="articleDAO" ref="articleDAO" />
<property name="critiqueDAO" ref="critiqueDAO"/>
</bean>
<bean id="AlbumAction" class="com.tzblog.action.AlbumAction">
<property name="albumService" ref="albumService" />
</bean>
<bean id="ArticleAction" class="com.tzblog.action.ArticleAction">
</bean>
<bean id="MeAction" class="com.tzblog.action.MeAction">
<property name="meService" ref="meService" />
</bean>
<bean id="CritiqueAction" class="com.tzblog.action.CritiqueAction">
<property name="critiqueService" ref="critiqueService" />
</bean>
<!-- Service -->
<bean id="albumService" class="com.tzblog.service.AlbumService"></bean>
<bean id="meService" class="com.tzblog.service.MeService">
<!-- meService要用的对象,下面的一样 -->
<property name="meDAO" ref="meDAO"/>
</bean>
<bean id="critiqueService" class="com.tzblog.service.CritiqueService"></bean>
<!-- DAO -->
<bean id="albumDAO" class="com.tzblog.dao.AlbumDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="articleDAO" class="com.tzblog.dao.ArticleDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="critiqueDAO" class="com.tzblog.dao.CritiqueDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="meDAO" class="com.tzblog.dao.MeDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="photoDAO" class="com.tzblog.dao.PhotoDAO"/>
struts2的配置文件struts.xml
<!-- 开启开发模式,在不使用spring的时候可以自动热部署-->
<constant name="struts.devMode" value="true">
<!-- strict-method-invocation="false" 的作用是允许使用通配符 -->
<package name="article" namespace="/" extends="struts-default" strict-method-invocation="false">
<action name="article_*" class="ArticleAction" method="{1}">
<result name="success">/WEB-INF/jsp/article.jsp</result>
<result name="detail">/WEB-INF/jsp/article_detail.jsp</result>
</action>
<action name="index" class="IndexAction">
<result name="success">/WEB-INF/jsp/index.jsp</result>
</action>
<action name="about" class="MeAction">
<result>/WEB-INF/jsp/aboutMe.jsp</result>
</action>
<action name="album_*" class="AlbumAction" method="{1}">
<result>/WEB-INF/jsp/album.jsp</result>
<result name="input">/WEB-INF/jsp/album_detail.jsp</result>
</action>
<action name="critique_*" class="CritiqueAction" method="{1}">
<result>/WEB-INF/jsp/critique.jsp</result>
<result name="input" type="redirectAction">critique</result>
</action>
</package>
hibernate的配置文件
因为已经交由spring来管理hibernate,所有不再需要hibernate.cfg.xml文件。但是还是需要hibernate关系映射文件。