使用Maven配置Struts2 集成Spring
2016-06-28 11:43
441 查看
使用Maven配置Struts2 集成Spring
上篇文章介绍了如何配置Struts2,但是Struts和Spring是怎么集成的呢,他们关联的配置是什么,带着这些疑问,我又开始找各种资料。开此文以记录。 集成Spring需要在Web.xml中配置Spring的监听类和Spring bean文件,在Struts.xml文件中配置使用Spring实例化类;添加Struts和Spring关联Jar包struts2-spring-plugin.jar。估计是有些版本的struts2-spring-plugin.jar包中的struts-plugin.xml已经默认配置使用Spring,所以Struts.xml就不需要另外配置使用Spring,我配到的版本就是这样的。 大概的思路用Spring自动初始化一个Person对象,并返回值到页面中。Person对象为Action类的一个属性。
添加struts-spring关联jar包
在pom.xml添加下面配置:<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.5-BETA1</version> </dependency>
保存后就发现,Maven已经自动下载了jar文件,如下图:
看到struts-plugin.xml了吗,里面就有struts使用spring注入的配置:
constant name=”struts.objectFactory” value=”spring” />
所以不需要在struts.xml做另外的配置。
添加Spring Jar 包
在pom.xml中添加下面配置:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.0.RELEASE</version> </dependency>
也许有人问怎么知道引用那么几个jar包,其实我刚开始配置的也只是配置了个spring-context节点。但是跑起来提示ClassNotFound,NoClassDefine等等,针对错误添加相应的jar即可。
配置web.xml
<web-app> <display-name>Archetype Created Web Application</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/application.xml</param-value> </context-param> </web-app>
刚开始没添加spring-web.jar包时,这个ContextLoaderListener也是提示NotFound。
添加Person类
package com.hurricane.entity; public class Person { public int Age; public String Name; public int getAge() { return Age; } public void setAge(int age) { Age = age; } public String getName() { return Name; } public void setName(String name) { Name = name; } }
修改LoginAction类
我需要在这个类中添加一个Person类的变量,变量值属性值初始化在Spring的配置文件中。package com.hurricane.action; import java.io.IOException; import com.hurricane.entity.Person; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { public String Name; public int Age; public Person PersonShana; public String getResult() { return Result; } public Person getPersonShana() { return PersonShana; } public void setPersonShana(Person personShana) { PersonShana = personShana; } public void setResult(String result) { Result = result; } public String Result; public String getName() { return Name; } public void setName(String name) { Name = name; } public int getAge() { return Age; } public void setAge(int age) { Age = age; } @Override public String execute() throws Exception { return "success"; } }
修改Index.jsp
修改index.jsp直接把PersonShana这个对象打印出来,这个对象是由spring初始化的。<%@ taglib uri="/struts-tags" prefix="s"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@ page pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <h2>Hello World!</h2> <form action="login"> 姓名<s:property value="PersonShana.Name" /> 年龄<s:property value="PersonShana.Age" /> </form> </body> </html>
配置Struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true"></constant> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <constant name="struts.locale" value="zh_CN"></constant> <package name="hurricane" extends="struts-default"> <action name="login" class="login"> <result> index.jsp </result> </action> </package> </struts>
配置application.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="person" name="person" class="com.hurricane.entity.Person"> <property name="name" value="shana"></property> <property name="age" value="29"></property> </bean> <bean id="login" name="loginaction" class="com.hurricane.action.LoginAction"> <property name="personShana" ref="person"></property> </bean> </beans>
运行index.jsp
下载demo
相关文章推荐
- maven学习
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- maven插件maven-war-plugin的使用
- jenkins------部署项目到jboss eap下
- maven使用经验集
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- 监听器获取Spring配置文件的方法
- Java利用Sping框架编写RPC远程过程调用服务的教程
- springmvc 发送ajax出现中文乱码的解决方法汇总