集成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. 洛谷P1012 拼数 string

    又是大水题... 这一题过水,令人无法接受...... 但是如果我们不知道string的一个神奇的性质的话,就会很难受. 我一开始手写 < 号,但是发现如果 string a 的前一部分恰好是 ...

  2. 忘记ios访问限制密码

    1.使用iTunes将手机备份在本地. 2.下载iBackupBot,打开后在左侧可以看到你的历史备份,选择刚刚备份的文件.依次选择System Files -> HomeDomain -> ...

  3. C++中const关键字的使用方法,烦透了一遍一遍的搜,总结一下,加深印象!!!

    之前一直在学习C/C++,关于const的使用,这里出现一点,那里出现一点.知识用时方恨少,这一段时间正好各种笔试题,其中关于const的用法也是层出不穷,所以疲于在书本上各种翻,这里汇总一下,加深自 ...

  4. Windows7 64下搭建Caffe+python接口环境

    参考链接: http://www.cnblogs.com/yixuan-xu/p/5858595.html http://www.cnblogs.com/zf-blog/p/6139044.html ...

  5. Math.random()和UUID.randomUUID().toString()性能对比【纯原】

    Math.random()和UUID.randomUUID().toString()性能对比 不言而喻,因为Math.random()不需要保证唯一性,所做的操作远比UUID消耗更小的性能, 在部分要 ...

  6. Study 2 —— 格式化输出

    打印人物信息的两种方法第一种: Name = input('Input your name: ') Age = input('Input your age: ') Job = input('Input ...

  7. docker下载镜像与替换默认源

    1.常用源 中科大docker源:https://mirrors.ustc.edu.cn/docker-ce/ 使用参考文档:http://mirrors.ustc.edu.cn/help/docke ...

  8. Python复习笔记(三)函数进阶

    问题 1:在函数内部,针对参数使用 赋值语句,会不会影响调用函数时传递的 实参变量? —— 不会! 无论传递的参数是 可变 还是 不可变 只要 针对参数 使用 赋值语句,会在 函数内部 修改 局部变量 ...

  9. android measure的时候报空指针

    1.使用listview的时候,在代码中动态设置其高度,在android低版本中,这个低版本是以4.4为界,会报measure的空指针,原因是低版本relativelayout有个bug,使用list ...

  10. KillerBee

    KillerBee介绍 KillerBee----是攻击zigbee和IEEE 802.15.4网络的框架和工具.使用killerBee工具和一个兼容的IEEE 802.15.4无线接口,你就能窃取z ...