您的位置:首页 > 编程语言 > Java开发

Spring学习(八)spring整合struts2

2015-08-31 22:47 609 查看
一、spring框架对struts等表现层框架的整合原理 :

使用spring的ioc容器管理struts中用于处理请求的Action

将Action配置成ioc容器中的bean

延伸:spring对持久层框架/技术的整合原理 (封装) :

提供模板类封装对应技术/框架的开发流程

通过对模板类的使用,实现对传统开发流程的”代替”。

二、整合方式:

插件方式

struts2为了实现对spring框架整合,也提供了一个插件的配置文件struts-plugin.xml

struts2-spring-plugin.jar

三、整合过程

a 创建web工程,添加struts2框架支持(导入struts2自带必需包并在web.xml中配置 Filter)

b web工程添加spring框架支持(导入spring核心层jar包,以及struts2文件下下的包,在web.xml中配置Listener监听器和容器配置文件参数)

四、具体实例

spring在web工程中的使用传送门->

结构:



页面:

<form action="login.action" method="post">
登录名:<input type="text"  name="loginname"/><br/>
密码:<Input type="password" name="password"/><br/>
<Input type="submit" value="登录"/>
</form>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
<filter>
<filter-name>etoak</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>etoak</filter-name>
<url-pattern>*.action</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/applicationContext.xml</param-value>
</context-param>

<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


applicationContext.xml

<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-3.2.xsd"> <!--
每在工程添加一个用于处理请求的Action
就需要将其配置成ioc容器中的bean

1 action何时实例化?  容器启动时
单独使用struts2时,action何时实例化?
客户端每次提交请求时
2 action实例化状态?  单例
单独使用struts2时,非单例

注意 : 为了保证action状态的一致性;在将Action
配置成ioc容器中的bean对象时,需要将其状态设置为~非单例状态
-->
<bean id="action" class="com.etoak.action.LoginAction"
scope="prototype"></bean>
</beans>


struts.xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--
请求解析器 ActionProxy "login"
请求调度者 ActionInvocation
-->
<package name="etoak" extends="struts-default">
<!--
请求和处理之间的映射关系如何形成
<action name="请求" class="Action">
class属性:指向的是ioc容器中某个bean的ID值
-->
<action name="login" class="action">
<result name="success" type="redirect">/success.jsp</result>
</action>
</package>
</struts>


LoginAction.java

public class LoginAction extends ActionSupport {
private String loginname;
private String password;
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String execute() throws Exception {
// 处理login.action请求 - DAO
System.out.println("loginname--"+loginname);
System.out.println("password--"+password);
// 调用DAO    ioc依赖注入 (setter注入)
return this.SUCCESS;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: