集成Struts2+Spring+Hibernate





第一种方案:让Spring创建Struts2的Action,不让Spring完全管理Struts2的Action

     Struts2 Action中的依赖对象,默认会根据名称自动装配





1、创建web项目





2、引入Struts2的依赖包,将依赖包拷贝到WEB-INF/lib下

* commons-logging-1.0.4.jar

* freemarker-2.3.15.jar

* ognl-2.7.3.jar

* struts2-core-2.1.8.1.jar

* xwork-core-2.1.6.jar

* commons-fileupload-1.2.1.jar



3、引入Spring的依赖包,将依赖包拷贝到WEB-INF/lib下

* spring.jar

* lib/aspectj/*.jar



4、引入hibernate相关依赖包,将依赖包拷贝到WEB-INF/lib下

* hibernate3.jar

* lib/*.jar



5、数据库驱动

* MySQl JDBC Driver



6、将Struts2和Spring集成的依赖包拷贝到WEB-INF/lib下

* struts2-spring-plugin-2.1.8.1.jar



7、在web.xml文件中配置StrutsPrepareAndExecuteFilter

    <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>

    

8、提供struts.xml配置文件,提供必要属性的配置

* struts.i18n.encoding=GB18030

* struts.configuration.xml.reload=true

* struts.devMode=true   



9、提供Spring的配置文件

* applicationContext-service.xml

* applicationContext-dao.xml

* applicationContext-common.xml



10、提供hibernate.cfg.xml配置文件,提供log4j





11、在web.xml文件中配置Spring的ContextLoaderListener,创建BeanFactory

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <!-- 

    <param-value>classpath:applicationContext-*.xml</param-value>

    -->

    <param-value>classpath:applicationContext.xml</param-value> 

    </context-param>

    

    <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>、

    

11、在web.xml文件中配置OpenSessionInViewFilter(需要放到Struts2的Filter前面)

<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>



12、提供用户添加表单和add_success.jsp





13、建立User实体类,编写hibernate映射文件,将映射文件加入到hibernate.cfg.xml中





14、建立UserDao和UserService,并进行实现





15、建立Struts2的Action,并配置到Struts2的配置文件中





16、在jsp中调用Action

第二种方案(推荐):

集成Struts2+Spring+Hibernate





第一种方案:让Spring创建Struts2的Action,Spring完全管理Struts2的Action

      将Struts2的Action配置到Spring的配置文件中





1、提供Spring配置文件,配置Struts2的Action

* applicationContext-action.xml



2、在Spring中必须注入Struts2中Action的的依赖对象

<bean id="addUserAction" class="com.bjpowernode.usermgr.web.action.AddUserAction" scope="prototype">

<property name="userService" ref="userService"/>

</bean>


!!!必须设置scope="prototype"





3、struts.xml配置文件需要修改,<action>标签中的class属性值和IoC容器中本次请求对应的Action的id值相同

<package name="user-package" extends="struts-default" namespace="/user">

<action name="add" class="addUserAction">

<result>/add_success.jsp</result>

</action>

</package>

集成Struts2+Spring+Hibernate_两种方案的更多相关文章

  1. struts2+spring的两种整合方式

    也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...

  2. Spring Boot 配置文件密码加密两种方案

    Spring Boot 配置文件密码加密两种方案 jasypt 加解密 jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring 项目中.可以快速集成到 Spring Boot 项 ...

  3. struts2和spring的两种整合方式

    首先,来看看如何让Spring 来管理Action. 在struts.xml中加入 <constant name="struts.objectFactory" value=& ...

  4. .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)

    一.前言     上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案,另外如果没看我上篇博客的人最好看一下,否则你可能看的云里雾里的,这里我就不进行具体的方案 ...

  5. 详解Grunt插件之LiveReload实现页面自动刷新(两种方案)

    http://www.jb51.net/article/70415.htm    含Grunt系列教程 这篇文章主要通过两种方案详解Grunt插件之LiveReload实现页面自动刷新,需要的朋友可以 ...

  6. Linux下实现秒级定时任务的两种方案

    Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...

  7. [转载]Java操作Excel文件的两种方案

    微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel.时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发.在我们实际开发企业办公系统的过程中,常常有客户这样子要 ...

  8. 浅谈Spring的两种配置容器

    浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41   作者:黄小鱼ZZZ     ...

  9. 比较好用的移动端适配的两种方案及flexible和px2rem-loader在webpack下的配置

    移动端适配,目前自己常用的两种 方案,参考以下两篇好文 方案一:使用lib-flexible包 https://www.w3cplus.com/mobile/lib-flexible-for-html ...

随机推荐

  1. 洛谷 P1417烹调方案

    题目大意: 一共有n件食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去ci的时间. 求最大美味指数之和. 分析: 显然的0/ ...

  2. C#反射遍历/查询类中的属性以及值

    遍历一个类/或类对象的属性/值,很有用,看个例子 using System; using System.Collections.Generic; using System.Linq; using Sy ...

  3. BellmanFord 最短路

    时间复杂度:O(VE) 最多循环V次,每次循环对每一条边(共E条边)判断是否可以进行松弛操作 最多V次:一个点的最短路,最多包含V-1个点(不包含该点), 如d1->d2->d3-> ...

  4. poj3070_斐波那契数列(Fibonacci)

    用矩阵求斐波那契数列,快速幂log(n),只用求最后4位(加和乘的运算中前面的位数无用) #include <stdio.h> #include <stdlib.h> int ...

  5. 深入flask中的request

    缘起 在使用flask的时候一直比较纳闷request是什么原理,他是如何保证多线程情况下对不同请求参数的隔离的. 准备知识 在讲request之前首先需要先理解一下werkzeug.local中的几 ...

  6. 超级牛皮的oracle的分析函数over(Partition by...) 及开窗函数

    over(Partition by...) 一个超级牛皮的ORACLE特有函数. 天天都用ORACLE,用了快2年了.最近才接触到这个功能强大而灵活的函数.真实惭愧啊! oracle的分析函数over ...

  7. 设计模式---组件协作模式之模板方法模式(Tempalte Method)

    前提:组件协作模式 现代软件专业分工之后的第一个结构是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常见的模式. 我们常常使用框架来写自己的 ...

  8. 版本管理——git

    一.git简介 git是一个 分布式版本控制系统 ,学习git之前首先要了解什么是分布式版本控制系统. 集中式版本控制:版本库集中存放在中央服务器,我们工作的时候先从中央服务器获取最新版本,干完活后把 ...

  9. quartz定时任务-job

    1,首先添加对quartz组建的引用 quartz-2.2.3.jar,slf4j-api-1.7.7.jar https://files.cnblogs.com/files/renjing/quar ...

  10. android contentprovider内容提供者

    contentprovider内容提供者:让其他app可以访问私有数据库(文件) 1.AndroidManifest.xml 配置provider <?xml version="1.0 ...