本文主要讲述如何将Spring Framework 4.2.1版与Struts 2.3.24.1版通过XML配置进行集成,从而用于Web项目的开发。
Spring是一个企业Java应用开发框架,而Struts 是一个Java Web应用开发框架,这意味着两者可以结合在一起用于开发Web应用。
Spring MVC是Spring框架的一部分,用于建立Java Web应用,而Struts立足于Java Servlet API的基础上也使用了MVC架构。因此,当Spring和Struts相集成时,在MVC部分不应该重叠,而应该相互补充。
Spring框架有一个优秀的依赖注入管理,因此可用于管理业务逻辑Bean和Struts的Action Bean。另一方面,我们可以使用Struts负责Web应用的MVC部分。
Struts 2框架提供了一个名为Spring Plugin的插件,通过此插件可以与Spring框架进行集成。此插件提供了这样的JAR包:struts2-spring-plugin-VERSION.jar,把此文件放入Web项目中。
要启用Spring Plugin插件,让Spring框架通过其反转控制容器来管理Struts的所有Action Bean,在Spring应用持续上下文配置文件中进行声明。这样,在Struts的配置文件中,就可以使用Bean的名字来代替原先的“包名+类名”的方式。比如可以这样:
而原先是这样:
另外,还可以使用Spring框架的@Autowired注释让Spring字段注入依赖进类中。
下面我们开始实战。
本文使用的工具如下:
修改项目的Facet,调整为Dynamic Web Module (3.0)和Java (1.8)
声明Java和Spring框架的版本
添加Spring框架的依赖
添加Struts 2框架的依赖
添加Spring Plugin插件的依赖
添加编译时所需的Java Servlet & JSP依赖
创建名为User.java的模型类
创建名为UserDAO.java的业务逻辑类:
可见,有效的用户名为“admin”,密码为“pwd”。
编写Struts的Action类LoginAction.java
需要理解:
userDao的Setter方法是供Spring注入实际的实现类
成员变量user的getter和setter方法用于表单与模型对象User的一一对应
方法execute()简单的重定向到SUCCESS页面或ERROR页面
创建名为LoginForm.jsp的页面
登录成功的LoginSuccess.jsp页面
登录失败的LoginError.jsp页面
web.xml的内容如下
在项目src下创建struts.xml配置文件
在/WEB-INF/spring目录下创建名为appContext.xml的配置文件。
最终项目结构如图所示:
可以看到
输入“admin”和“pwd”后,可以看到
如果输入错误,可以看到:
可见,项目完全工作正常。Spring 4与Struts 2项目基于XML的集成是成功的。