集成Struts2+Spring+Hibernate_两种方案
集成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_两种方案的更多相关文章
- struts2+spring的两种整合方式
也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...
- Spring Boot 配置文件密码加密两种方案
Spring Boot 配置文件密码加密两种方案 jasypt 加解密 jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring 项目中.可以快速集成到 Spring Boot 项 ...
- struts2和spring的两种整合方式
首先,来看看如何让Spring 来管理Action. 在struts.xml中加入 <constant name="struts.objectFactory" value=& ...
- .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)
一.前言 上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案,另外如果没看我上篇博客的人最好看一下,否则你可能看的云里雾里的,这里我就不进行具体的方案 ...
- 详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
http://www.jb51.net/article/70415.htm 含Grunt系列教程 这篇文章主要通过两种方案详解Grunt插件之LiveReload实现页面自动刷新,需要的朋友可以 ...
- Linux下实现秒级定时任务的两种方案
Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...
- [转载]Java操作Excel文件的两种方案
微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel.时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发.在我们实际开发企业办公系统的过程中,常常有客户这样子要 ...
- 浅谈Spring的两种配置容器
浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41 作者:黄小鱼ZZZ ...
- 比较好用的移动端适配的两种方案及flexible和px2rem-loader在webpack下的配置
移动端适配,目前自己常用的两种 方案,参考以下两篇好文 方案一:使用lib-flexible包 https://www.w3cplus.com/mobile/lib-flexible-for-html ...
随机推荐
- easyui-treegrid的案例
1.前台html <%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- (转)JVM——自定义类加载器
背景:为什么要自定义,如何自定义,实现过程 转载:http://blog.csdn.net/SEU_Calvin/article/details/52315125 0. 为什么需要自定义类加载器 网上 ...
- Pycharm激活、配置以及快捷方式 | 图解
访问flyai.club,一键创建你的人工智能项目 来源 | Python (python6359) Pycharm可以去官网下载 Pycharm的安装激活 jar包的目的就是让截获截止时间并骗过py ...
- HTML的前世今生
HTML的基础知识扫盲 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 三年前,我就听周围的一些工程师说,python就是一个脚本语言,没啥好学的,学JAVA吧,python能干的J ...
- 关于Java形参和实参的理解
源码地址:https://github.com/mynawang/javabasic-summary/tree/master/chapter01 1.方法的形参中,java的基本数据类型是传值调用,对 ...
- Hive记录-Sqoop常用命令
1.sqoop是什么 Sqoop是一款开源的数据迁移工具,主要用于Hadoop(Hive)与传统的关系型数据库(mysql...)相互之间的数据迁移. 2.sqoop的特点 sqoop的底层实现是ma ...
- H5静态资源本地化实践
现在很多app都是通过webview内嵌H5的页面,这种方式的好处就是无需发版就能更新线上的内容,而且可以做到多平台的统一开发,节约开发成本.但是这种模式也带来了一定的问题,web开发很大程度依赖于网 ...
- windows递归复制指定时间后修改过的文件
因为在拷贝web站点时,也会存在更新,需要定期覆盖新的内容,就是上次覆盖的时间和到这次时间内修改过的文件都复制. 实现命令xcopy xcopy src dest D:\WWW\phpMyAdmin\ ...
- 使用fastreport以代码方式创建报表
Report report = new Report();// register the "Products" tablereport.RegisterData(dataSet1. ...
- git gui提交无法获知你的身份
解决方法: 打开git 终端 #输入下面两句,并且替换成你的名字和邮箱 git config --global user.email "your@email.com" git co ...