近期集成了一次较新版本的s2sh,出现了不少问题,网上资料也是良莠不齐,有的甚至就是扯淡,简单的把jar包扔进去就以为是集成成功了,在这里整理一下详细的步骤,若哪位有什么不同看法,可以留言,欢迎批评改正。

首先说下集成的环境,Eclipse 4.4,Tomcat 7.0.54,Struts2.3.16,Hibernate3.6.10,Spring3.2.6

相关JAR包已上传至百度云:http://pan.baidu.com/s/1pJluA5l

  • 搭建Struts2框架

    1. 创建Java Web工程SSH

    2. 添加struts2.3.16的8个基本类库,可能以前版本是6个,但是2.3.16版本本人测试是8个,大家可以自己测试下

      

    3. 在src下创建config.struts包,并创建struts2的配置文件struts.xml

    4. 在web.xml文件中添加过滤器,如果strtus2配置文件放在src下无需添加init-param标签。

  1. <filter>
  2. <filter-name>struts2</filter-name>
  3. <filter-class>
  4.   org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  5. </filter-class>
  6. <init-param>
  7. <param-name>config</param-name>
  8. <param-value>
  9. struts-default.xml,struts-plugin.xml,config/struts/struts.xml
  10. </param-value>
  11. </init-param>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>struts2</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>

    5. 向struts.xml中添加如下代码

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <struts>
  6. <package name="ssh" namespace="/" extends="struts-default">
  7.  
  8. <action name="" class="" method="">
  9. <result name=""></result>
  10. </action>
  11.  
  12. </package>
  13. </struts>

    6.  创建以下路径用于测试

        WebContent/Web-INF/jsp/index.jsp

(Web-INF为安全目录,无法直接访问)

    7. 在src目录下创建action包,用于放置Struts2的Action,然后创建MainAction,用于测试,以及以后的页面跳转,并添加如下代码:

  1. package action;
  2.  
  3. public class MainAction {
  4.  
  5. public String start(){
  6. return "start";
  7. }
  8.  
  9. }

    8.  在struts.xml中进行配置

  1. <struts>
  2. <package name="ssh" namespace="/" extends="struts-default">
  3. <default-action-ref name="index" />
  4. <action name="index" class="action.MainAction" method="start">
  5. <result name="start">WEB-INF/jsp/index.jsp</result>
  6. </action>
  7. </package>
  8. </struts>

    9. 启动web服务器,测试http://localhost:8080/SSH/

  • 集成struts2和spring

    1. 添加spring类库

      

    2. 添加strut2集成spring类库:struts2-spring-plugin-2.3.16.3.jar

    3. 添加spring配置文件applicationContext.xml,并添加如下信息

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  3. <beans>
  4.  
  5. </beans>

    4. 在web.xml文件中添加spring监听器,在filter标签外,context-param标签是为了自定义spring配置文件的位置

  1. <listener>
  2.   <listener-class>
  3.     org.springframework.web.context.ContextLoaderListener
  4. </listener-class>
  5. </listener>
  6. <context-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>classpath:config/spring/applicationContext.xml </param-value>
  9. </context-param>

    5. 启动Tomcat测试

    6. spring管理struts2中Action,在spring文件中配置

  1. <bean id="mainAction" class="action.MainAction"></bean>

    7. 修改struts对应配置文件信息,换成spring配置文件中<bean id="mainAction">

  1. <struts>
       <constant name="struts.objectFactory" value="spring" />
  2. <package name="ssh" namespace="/" extends="struts-default">
  3. <default-action-ref name="index" />
  4. <action name="index" class="mainAction" method="start">
  5. <result name="start">WEB-INF/jsp/index.jsp</result>
  6. </action>
  7. </package>
  8. </struts>

    8. 重启tomcat测试是否可用

  • 集成hibernate

    1. 添加hibernate必须的jar包

      

    2. 添加hibernate配置文件,位置设置在config/hibernate/cfg目录下,文件名:hibernate.cfg.xml,并向其中添加如下配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6.   <session-factory></session-factory>
  7. </hibernate-configuration

    3. 创建包hibernate.hbm,用于存放hibernate的映射文件,创建User.hbm.xml并添加如下信息

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping>
  6. </hibernate-mapping>

    4. 配置spring的数据源,添加Tomcat JDBC POOL连接池类库

      

    5. 在spring配置文件中配置连接池,在src目录下创建properties包,用于存属性文件,并创建文件db.properties,用于保存数据库连接池的配置属性之后向db.properties中添加数据库连接池的属性数据,包括:url、driver、username、password、initialSize、maxActive、maxIdle、minIdle、maxWait、removeAbandoned、 removeAbandonedTimeOut等

  1. <bean id="PropertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  2.   <property name="location" value="classpath:config/properties/datasource.properties" />
  3. </bean>
  4.  
  5. <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" >
  6.   <property name="driverClassName" value="${driver}" />
  7.   <property name="url" value="${url}" />
  8.   <property name="username" value="${username}" />
  9.   <property name="password" value="${password}" />
  10.  
  11.   <property name="initialSize" value="${initialSize}" />
  12.   <property name="maxActive" value="${maxActive}" />
  13.   <property name="maxIdle" value="${maxIdle}" />
  14.   <property name="minIdle" value="${minIdle}" />
  15.   <property name="maxWait" value="${maxWait}" />
  16.   <property name="removeAbandoned" value="${removeAbandoned}" />
  17.   <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" />
  18. </bean>

    6. 在spring中完全管理hibernate配置,删除hibernate.cfg.xml,在spring配置文件中创建id为sessionFactory的bean

  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  2.   <property name="dataSource" ref="dataSource" />
  3.   <property name="hibernateProperties">
  4.     <props>
  5.       <prop key="hibernate.dialect">
  6.         org.hibernate.dialect.MySQLDialect
  7.       </prop>
  8.       <prop key="hibernate.format_sql">true</prop>
  9.       <prop key="hibernate.show_sql">true</prop>
        </props>
  10.   </property>
  11.   <property name="mappingLocations">
  12.     <list>
  13.       <value>classpath:config/hibernate/User.hbm.xml</value>
  14.     </list>
  15.   </property>
  16. </bean>

    7. 创建User实体类,UserDao、jsp等,并在spring中配置提供注入,进行测试

附:sping事务配置(基于tx、aop声明式)

    1. 在spring配置文件中添加声明

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. classpath:/org/springframework/beans/factory/xml/spring-beans-3.2.xsd
  9. http://www.springframework.org/schema/context
  10. classpath:/org/springframework/context/config/spring-context-3.2.xsd
  11. http://www.springframework.org/schema/tx
  12. classpath:/org/springframework/transaction/config/spring-tx-3.2.xsd
  13. http://www.springframework.org/schema/aop
  14. classpath:/org/springframework/aop/config/spring-aop-3.2.xsd">

    2. 添加事务配置,bean标签之外,beans标签之内

  1. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  2.   <tx:attributes>
  3.     <tx:method name="find*" read-only="false"/>
  4.     <tx:method name="add*" rollback-for="Exception"/>
  5.   </tx:attributes>
  6. </tx:advice>
  7. <aop:config>
  8.   <aop:pointcut id="serviceMethod" expression="execution(* action.*.*(..))"/>
  9.   <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice"/>
  10. </aop:config>

S2SH框架集成详解(Struts 2.3.16 + Spring 3.2.6 + Hibernate 3.6.10)的更多相关文章

  1. 转: javascript模块加载框架seajs详解

    javascript模块加载框架seajs详解 SeaJS是一个遵循commonJS规范的javascript模块加载框架,可以实现javascript的模块化开发和模块化加载(模块可按需加载或全部加 ...

  2. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的坏习惯. 通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车 ...

  3. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)

    通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...

  4. (转) Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    http://blog.csdn.net/u010648555/article/details/60767633 当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的 ...

  5. Hadoop 新 MapReduce 框架 Yarn 详解

    Hadoop 新 MapReduce 框架 Yarn 详解: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ Ap ...

  6. 测试框架mochajs详解

    测试框架mochajs详解 章节目录 关于单元测试的想法 mocha单元测试框架简介 安装mocha 一个简单的例子 mocha支持的断言模块 同步代码测试 异步代码测试 promise代码测试 不建 ...

  7. Android热门网络框架Volley详解[申明:来源于网络]

    Android热门网络框架Volley详解[申明:来源于网络] 地址:http://www.cnblogs.com/caobotao/p/5071658.html

  8. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  9. python+requests接口自动化测试框架实例详解

    python+requests接口自动化测试框架实例详解   转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...

随机推荐

  1. 基于BitNami for XAMPP进行Drupal7安装的教程(Win7平台)

    BitNami是一个开源项目,该项目产生的开源软件包可用于安装Web应用程序和解决方案堆栈,以及虚拟设备.BitNami 提供wordpress.joomla.drupal.bbpress等开源程序的 ...

  2. nginx 要改进的地方基础

  3. CSS3的appearance属性--改变元素的外观

    CSS3 appearance 属性 CSS 参考手册 实例 使 div 元素看上去像一个按钮: div { appearance:button; -moz-appearance:button; /* ...

  4. Ubuntu You don't have permission to access解决方案!

    最近对Linux越来越喜欢了,就直接安装了一个Ubuntu,配制好LAMP后,在做小项目时,出现了下面的问题:Ubuntu You don't have permission to access ** ...

  5. day2练习题

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  6. Dungeons and Candies

    Zepto Code Rush 2014:http://codeforces.com/problemset/problem/436/C 题意:k个点,每个点都是一个n * m的char型矩阵.对与每个 ...

  7. 1.AJAX简介

    没有AJAX会怎么样?普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,比如实现显示服务器时间.每次都要刷新页面的坏处:页面刷新打断用户操作.速度慢.增加服务器的流量压力.如果没有AJAX ...

  8. SVN服务器搭建(与apache整合)

    一.SVN介绍 SVN是一个版本控制工具,Subversion的版本库(repository),就是位于服务器,统一管理和储存数据的地方. 二.SVN数据存储方式 在Subversion中,版本库的数 ...

  9. 分治(CDQ):[BOI2007]摩基亚Mokia

    [题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能 ...

  10. Delphi生成GUID

    Delphi生成GUID Uses ComObj; Var aGUID: string; aGUID := GetClassId; // 取得GUID