1.上一章集成了spring和hibernate, 这一章节再讨论把struts2集成的方案。
2.在解压了struts-2.3.12-all.zip之后有个apps 目录, 这里面是struts2的一些使用示例, 我们使用winrar解压struts2-blank.war,解压后到WEB-INF/lib 目录把所有jar文件拷贝到项目WEB-INF/lib目录下面, 之前hibernate中带了一个javaassist-3.15.0.jar, struts2中带了javaassist-3.11.0.jar文件,会冲突, 需要把avaassist-3.11.0.jar 删除, 保留高版本。 如果整合后报velocity-tool 的错误,还有其他几个jar文件也需要加入velocity-1.7.jar velocity-tools-2.0.jar。 在解压了struts-2.3.12-all.zip之后有个lib 目录下拷贝struts2-spring-plugin-2.3.12.jar 到项目中, 此jar包是spring 和 struts2 整合的jar。
3.在解压了struts-2.3.12-all.zip之后有个apps 目录, 到WEB-INF/classes 目录下面 把struts.xml拷贝到项目src目录下面。
4.3. spring 和 struts2 整合提供了两种方案
第一:把struts2 action类完全交给spring 来创建 一般配置如下
@Controller("userAction") @Scope("prototype") public class UserAction { }
需要把UserAction交给spring来创建对象, 并且需要写@Scope("prototype") 如果不写上就会有线程安全的问题, 默认struts2 创建的action 都是多实例的, 因此需要开发人员不要遗忘写上这个属性,否则很容易引起bug
struts.xml配置
<action name="userList" class="userAction" method="userList"> <result name="success"> /WEB-INF/page/user/user_list.jsp </result> </action>
此处action标签配置上的class=”userAction” 名称则是刚才在UserAction类上面注解重命名的名称, 如果UserAction 里面有些类属性是交给spring 管理, spring则可以自动注入。
第二: 由struts2-spring-plugin-2.3.12.jar 插件来创建action实例
struts.xml配置
<constant name="struts.objectFactory" value="spring" /> <actionname="userList"class="com.lysoft.web.action.user.UserAction" method="userList"> <result name="success"> /WEB-INF/page/user/user_list.jsp</result> </action>
此处action标签配置上的class=”com.lysoft.web.action.user.UserAction” 名称则是UserAction类全路径的名称,这样的好处在于不用写@Scope("prototype")
避免了开发人员不小心犯错, 如果UserAction 里面有些类属性是交给spring 管理
spring则也可以自动注入。
Struts2 在匹配一个请求时,到配置文件中查找和请求相同的action标签, 如果配置了<constant name="struts.objectFactory" value="spring" />
会根据标签上面的class 属性上面的值, 到spring配置文件中查找是否配置了对应的bean节点, 查找到了则有spring来创建action, 如果查找不到会由struts2 的插件创建action的实例。
总结: 推荐使用第二种方法, 避免不小心犯下错误。
5. 在项目中的web.xml 文件加入如下配置:
<!-- 初始化Spring Beans --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- log4j 和spring 的整合 --> <context-param> <param-name>webAppRootKey</param-name> <param-value>ssh2.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- 使用Spring提供的编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- openSessioInView 需要放在strts2的前面 --> <filter> <filter-name>openSessionInView</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> <!-- 当sessionFactory名称不叫sessionFactory的时候 使用下面的配置 --> <!-- <init-param> <param-name>sessionFactoryBeanName</param-name> <param-value>mySessionFactory</param-value> </init-param>--> </filter> <filter-mapping> <filter-name>openSessionInView</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <!-- 拦截Struts2 Action --> <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>*.do</url-pattern> </filter-mapping>
6.至此已经完成struts2.12+spring3.2+hibernate4.2的集成了, 下一章节讨论测试3个框架整合是否正常。
相关推荐
这是一个struts 1.2 + spring 2.5 + hibernate 3.2框架demo, 运行环境为eclipse 3.2 + tomcat 5.5 + oracle 11g
Struts2.3 + Spring3.2 + Hibernate4.1 + HTML5 + CSS3开发示例代码。 其中包括如下文件: 介绍文档 Struts2.3 + Spring3.2 + Hibernate4.1 + HTML5 + CSS3开发示例.docx Eclipse工程文件 SSH2.zip Zip包是Eclipse...
struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本 ,mysql,tomcat,myeclipse完整工程
struts2.3+spring3.2+hibernate4.2整合,项目环境我搭建好了,大家可以参考学习 有好的建议希望多提出来!
struts2.5.0+spring4.1.6+hibernate4.2jar包
个人总结的搭建 Struts2.0 + Hibernate3.2 + Spring2.5 的说明 包含了所有jar包的名称以及有冲突jar包的名称(以便删除)。
struts2.1 + spring 2.5 + hibernate 3.2 增删改查 详细例子
前几天更换了最新版本的ssh,发现这次变化还是挺大的,费了很大劲才整理好,这是我整理的struts2.3.12+spring3.2+hibernate4.1.9 web网站框架,希望大家用的时候可以省点事吧,里面有用spring代理写的接口调用。
Struts2+hibernate3.2+Spring2.0架构搭建的菜鸟实例,按照每一步搭建自己的软件架构
cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码...
struts2+Spring2.5+Spring3.2)实现登录.struts2+Spring2.5+Spring3.2)实现登录.struts2+Spring2.5+Spring3.2)实现登录。
struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...
完整的struts1.2+hibernate3.2+spring2.5框架集成 完整的dwr2.0+spring2.5集成 处理的dwr2.0+hibernate3.2集成的问题
ssh(struts2.3.4+spring3.2+hibernate4.1.1)整合中jar包作用介绍 讲得很详细
Struts2+spring2.0+hibernate3.2整合带全部jar包 Struts2+spring2.0+hibernate3.2整合带全部jar包 Struts2+spring2.0+hibernate3.2整合带全部jar包
本demo采用struts2+spring4.0+hibernate4.2框架集成(内部包含所有jar包),有最dao最底层的代码,可在项目中直接使用,并实现了一个简单的登陆和查询,代码均测试通过,为打ssh框架的同学提供方便哦
Struts2+Spring2.5+Hibernate3.2集成实例开发2 Struts2+Spring2.5+Hibernate3.2集成实例开发2
struts2+spring2.5+hibernate3.2 找了半天没看到。自己整了一个。
1、可以运行(发布后,删除\Tomcat 6.0\webapps\ssh\WebRoot\WEB-INF\lib下的asm-2.2.3.jar) 2、采用Struts1.2 + Spring2.5 + Hibernate3.2 整合开发 3、SSH入门级实例
最新版SSH整合(Spring3.2+Struts2.3.12+Hibernate4.2)学习最新版SSH整合(Spring3.2+Struts2.3.12+Hibernate4.2)学习最新版SSH整合(Spring3.2+Struts2.3.12+Hibernate4.2)学习最新版SSH整合(Spring3.2+Struts...