【Java EE】Struts2.1.6与Spring2.5.6框架调整

【Java EE】Struts2.1.6与Spring2.5.6框架整合

1、在MyEclipse中新建项目(test)
2、Struts包导入
   暂时导入所必需的包,其他包将在用到时导入:
   commons-fileupload-1.2.1.jar
   commons-logging-1.0.4.jar
   freemarker-2.3.13.jar
   ognl-2.6.11.jar
   struts2-core-2.1.6.jar
   xwork-2.1.2.jar
 3、复制在Struts目录的例子程序中WEB-INF\classes\struts.xml文件,粘贴到项目的src目录下,主要保留其文件头:

 1【Java EE】Struts2.1.6与Spring2.5.6框架调整<?xml version="1.0" encoding="GBK" ?>
 2【Java EE】Struts2.1.6与Spring2.5.6框架调整<!DOCTYPE struts PUBLIC
 3【Java EE】Struts2.1.6与Spring2.5.6框架调整    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4【Java EE】Struts2.1.6与Spring2.5.6框架调整    "http://struts.apache.org/dtds/struts-2.0.dtd">
 5【Java EE】Struts2.1.6与Spring2.5.6框架调整
 6【Java EE】Struts2.1.6与Spring2.5.6框架调整<struts>
 7【Java EE】Struts2.1.6与Spring2.5.6框架调整    <package name="struts2" extends="struts-default">
 8【Java EE】Struts2.1.6与Spring2.5.6框架调整
 9【Java EE】Struts2.1.6与Spring2.5.6框架调整    </package>
10【Java EE】Struts2.1.6与Spring2.5.6框架调整</struts>


4、配置web.xml

 1【Java EE】Struts2.1.6与Spring2.5.6框架调整<?xml version="1.0" encoding="UTF-8"?>
 2【Java EE】Struts2.1.6与Spring2.5.6框架调整<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 3【Java EE】Struts2.1.6与Spring2.5.6框架调整    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4【Java EE】Struts2.1.6与Spring2.5.6框架调整    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 5【Java EE】Struts2.1.6与Spring2.5.6框架调整    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 6【Java EE】Struts2.1.6与Spring2.5.6框架调整
 7【Java EE】Struts2.1.6与Spring2.5.6框架调整    <filter>
 8【Java EE】Struts2.1.6与Spring2.5.6框架调整        <filter-name>struts2</filter-name>
 9【Java EE】Struts2.1.6与Spring2.5.6框架调整        <filter-class>
10【Java EE】Struts2.1.6与Spring2.5.6框架调整            org.apache.struts2.dispatcher.FilterDispatcher
11【Java EE】Struts2.1.6与Spring2.5.6框架调整        </filter-class>
12【Java EE】Struts2.1.6与Spring2.5.6框架调整    </filter>
13【Java EE】Struts2.1.6与Spring2.5.6框架调整    <filter-mapping>
14【Java EE】Struts2.1.6与Spring2.5.6框架调整        <filter-name>struts2</filter-name>
15【Java EE】Struts2.1.6与Spring2.5.6框架调整        <url-pattern>/*</url-pattern>
16【Java EE】Struts2.1.6与Spring2.5.6框架调整    </filter-mapping>
17【Java EE】Struts2.1.6与Spring2.5.6框架调整
18【Java EE】Struts2.1.6与Spring2.5.6框架调整    <welcome-file-list>
19【Java EE】Struts2.1.6与Spring2.5.6框架调整        <welcome-file>index.jsp</welcome-file>
20【Java EE】Struts2.1.6与Spring2.5.6框架调整    </welcome-file-list>
21【Java EE】Struts2.1.6与Spring2.5.6框架调整</web-app>

5、引入Spring包,在dist目录下
   spring.jar
6、在src目录下建立三个文件
   applicationContext-actions.xml
   applicationContext-beans.xml
   applicationContext-common.xml
   这三个文件其实是applicationContext.xml的分解,为的是避免所有配置放在同一文件,造成混乱。
   结构均如下:

 1【Java EE】Struts2.1.6与Spring2.5.6框架调整<?xml version="1.0" encoding="GBK"?>
 2【Java EE】Struts2.1.6与Spring2.5.6框架调整
 3【Java EE】Struts2.1.6与Spring2.5.6框架调整<beans xmlns="http://www.springframework.org/schema/beans"
 4【Java EE】Struts2.1.6与Spring2.5.6框架调整    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5【Java EE】Struts2.1.6与Spring2.5.6框架调整    xmlns:context="http://www.springframework.org/schema/context"
 6【Java EE】Struts2.1.6与Spring2.5.6框架调整    xmlns:tx="http://www.springframework.org/schema/tx"
 7【Java EE】Struts2.1.6与Spring2.5.6框架调整    xmlns:aop="http://www.springframework.org/schema/aop"
 8【Java EE】Struts2.1.6与Spring2.5.6框架调整    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 9【Java EE】Struts2.1.6与Spring2.5.6框架调整                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
10【Java EE】Struts2.1.6与Spring2.5.6框架调整                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
11【Java EE】Struts2.1.6与Spring2.5.6框架调整                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
12【Java EE】Struts2.1.6与Spring2.5.6框架调整
13【Java EE】Struts2.1.6与Spring2.5.6框架调整</beans>


7、需要在web.xml进行配置

【Java EE】Struts2.1.6与Spring2.5.6框架调整    <context-param>
【Java EE】Struts2.1.6与Spring2.5.6框架调整        
<param-name>contextConfigLocation</param-name>
【Java EE】Struts2.1.6与Spring2.5.6框架调整        
<param-value>classpath*:applicationContext-*.xml</param-value>
【Java EE】Struts2.1.6与Spring2.5.6框架调整    
</context-param>

 

【Java EE】Struts2.1.6与Spring2.5.6框架调整    <listener>
【Java EE】Struts2.1.6与Spring2.5.6框架调整        
<listener-class>
【Java EE】Struts2.1.6与Spring2.5.6框架调整            org.springframework.web.context.ContextLoaderListener
【Java EE】Struts2.1.6与Spring2.5.6框架调整        
</listener-class>
【Java EE】Struts2.1.6与Spring2.5.6框架调整    
</listener>

   前一段代码的配置是因为我们配置了后一段代码的配置后它默认是到WEB-INF下查找applicationContext.xml文件,我们现在改到src目录下并进行文件分解。

8、需要引入Struts2中的另一个包
   struts2-spring-plugin-2.1.6.jar
9、测试是否整合成功
(1)建立页面login.jsp、welcome.jsp、error.jsp分别为登录页面、登录成功页面、出错页面
login.jsp

 1【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整<%【Java EE】Struts2.1.6与Spring2.5.6框架调整@ page language="java" contentType="text/html; charset=GB18030"
 2【Java EE】Struts2.1.6与Spring2.5.6框架调整    pageEncoding="GB18030"
%>
 3【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整<%【Java EE】Struts2.1.6与Spring2.5.6框架调整@ taglib prefix="s" uri="/struts-tags"%>
 4【Java EE】Struts2.1.6与Spring2.5.6框架调整<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5【Java EE】Struts2.1.6与Spring2.5.6框架调整<html>
 6【Java EE】Struts2.1.6与Spring2.5.6框架调整    <head>
 7【Java EE】Struts2.1.6与Spring2.5.6框架调整        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 8【Java EE】Struts2.1.6与Spring2.5.6框架调整        <title>登录页面</title>
 9【Java EE】Struts2.1.6与Spring2.5.6框架调整    </head>
10【Java EE】Struts2.1.6与Spring2.5.6框架调整    <body>
11【Java EE】Struts2.1.6与Spring2.5.6框架调整        <s:form action="login" method="post">
12【Java EE】Struts2.1.6与Spring2.5.6框架调整            <s:textfield name="username" label="username" />
13【Java EE】Struts2.1.6与Spring2.5.6框架调整            <s:password name="password" label="password" />
14【Java EE】Struts2.1.6与Spring2.5.6框架调整            <s:submit value="submit" />
15【Java EE】Struts2.1.6与Spring2.5.6框架调整        </s:form>
16【Java EE】Struts2.1.6与Spring2.5.6框架调整    </body>
17【Java EE】Struts2.1.6与Spring2.5.6框架调整</html>

welcome.jsp

 1【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整<%【Java EE】Struts2.1.6与Spring2.5.6框架调整@ page language="java" contentType="text/html; charset=GB18030"
 2【Java EE】Struts2.1.6与Spring2.5.6框架调整    pageEncoding="GB18030"
%>
 3【Java EE】Struts2.1.6与Spring2.5.6框架调整<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4【Java EE】Struts2.1.6与Spring2.5.6框架调整<html>
 5【Java EE】Struts2.1.6与Spring2.5.6框架调整    <head>
 6【Java EE】Struts2.1.6与Spring2.5.6框架调整        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 7【Java EE】Struts2.1.6与Spring2.5.6框架调整        <title>登录成功</title>
 8【Java EE】Struts2.1.6与Spring2.5.6框架调整    </head>
 9【Java EE】Struts2.1.6与Spring2.5.6框架调整    <body>
10【Java EE】Struts2.1.6与Spring2.5.6框架调整        用户名:${username }
11【Java EE】Struts2.1.6与Spring2.5.6框架调整        <br>
12【Java EE】Struts2.1.6与Spring2.5.6框架调整        密码:${password }
13【Java EE】Struts2.1.6与Spring2.5.6框架调整        <br>
14【Java EE】Struts2.1.6与Spring2.5.6框架调整    </body>
15【Java EE】Struts2.1.6与Spring2.5.6框架调整</html>


(2)建包com.test.manager和com.test.manager.impl分别存放业务逻辑处理的接口和其实现,分别建立接口LoginManager.java和其实现LoginManagerImpl.java
LoginManager.java

1【Java EE】Struts2.1.6与Spring2.5.6框架调整package com.test.manager;
2【Java EE】Struts2.1.6与Spring2.5.6框架调整
3【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整public interface LoginManager 【Java EE】Struts2.1.6与Spring2.5.6框架调整{
4【Java EE】Struts2.1.6与Spring2.5.6框架调整    public boolean isLogin(String username, String password);
5【Java EE】Struts2.1.6与Spring2.5.6框架调整}

LoginManagerImpl.java,只是测试用,判断用户名密码是否为intrl、intrl,若是则登录成功

 1【Java EE】Struts2.1.6与Spring2.5.6框架调整package com.test.manager.impl;
 2【Java EE】Struts2.1.6与Spring2.5.6框架调整
 3【Java EE】Struts2.1.6与Spring2.5.6框架调整import com.test.manager.LoginManager;
 4【Java EE】Struts2.1.6与Spring2.5.6框架调整
 5【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整public class LoginManagerImpl implements LoginManager【Java EE】Struts2.1.6与Spring2.5.6框架调整{
 6【Java EE】Struts2.1.6与Spring2.5.6框架调整    public boolean isLogin(String username, String password)
 7【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整    【Java EE】Struts2.1.6与Spring2.5.6框架调整{
 8【Java EE】Struts2.1.6与Spring2.5.6框架调整        if(null!=username&&null!=password&&"intrl".equals(username.trim())&&"intrl".equals(password.trim()))
 9【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整        【Java EE】Struts2.1.6与Spring2.5.6框架调整{
10【Java EE】Struts2.1.6与Spring2.5.6框架调整            return true;
11【Java EE】Struts2.1.6与Spring2.5.6框架调整        }

12【Java EE】Struts2.1.6与Spring2.5.6框架调整        return false;
13【Java EE】Struts2.1.6与Spring2.5.6框架调整    }

14【Java EE】Struts2.1.6与Spring2.5.6框架调整}

(3)在applicationContext-beans.xml把实现类配置上,以让Spring进行管理

【Java EE】Struts2.1.6与Spring2.5.6框架调整    <bean id="loginManager"
【Java EE】Struts2.1.6与Spring2.5.6框架调整        class
="com.test.manager.impl.LoginManagerImpl">
【Java EE】Struts2.1.6与Spring2.5.6框架调整    
</bean>

(4)创建包com.test.action用于存放action,并新建LoginAction.java,继承ActionSupport类
包含从页面所接收参数username、password,以及业务逻辑处理类LoginManager类型的loginManager,给username和password设置get、set,给loginManager设置set方法,以让Spring为我们自动注入;overwrite父类中的

 1【Java EE】Struts2.1.6与Spring2.5.6框架调整package com.test.action;
 2【Java EE】Struts2.1.6与Spring2.5.6框架调整
 3【Java EE】Struts2.1.6与Spring2.5.6框架调整import com.opensymphony.xwork2.ActionSupport;
 4【Java EE】Struts2.1.6与Spring2.5.6框架调整import com.test.manager.LoginManager;
 5【Java EE】Struts2.1.6与Spring2.5.6框架调整
 6【Java EE】Struts2.1.6与Spring2.5.6框架调整@SuppressWarnings("serial")
 7【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整public class LoginAction extends ActionSupport 【Java EE】Struts2.1.6与Spring2.5.6框架调整{
 8【Java EE】Struts2.1.6与Spring2.5.6框架调整    private LoginManager loginManager;
 9【Java EE】Struts2.1.6与Spring2.5.6框架调整    private String username;
10【Java EE】Struts2.1.6与Spring2.5.6框架调整    private String password;
11【Java EE】Struts2.1.6与Spring2.5.6框架调整
12【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整    public String getUsername() 【Java EE】Struts2.1.6与Spring2.5.6框架调整{
13【Java EE】Struts2.1.6与Spring2.5.6框架调整        return username;
14【Java EE】Struts2.1.6与Spring2.5.6框架调整    }

15【Java EE】Struts2.1.6与Spring2.5.6框架调整
16【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整    public void setUsername(String username) 【Java EE】Struts2.1.6与Spring2.5.6框架调整{
17【Java EE】Struts2.1.6与Spring2.5.6框架调整        this.username = username;
18【Java EE】Struts2.1.6与Spring2.5.6框架调整    }

19【Java EE】Struts2.1.6与Spring2.5.6框架调整
20【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整    public String getPassword() 【Java EE】Struts2.1.6与Spring2.5.6框架调整{
21【Java EE】Struts2.1.6与Spring2.5.6框架调整        return password;
22【Java EE】Struts2.1.6与Spring2.5.6框架调整    }

23【Java EE】Struts2.1.6与Spring2.5.6框架调整
24【Java EE】Struts2.1.6与Spring2.5.6框架调整【Java EE】Struts2.1.6与Spring2.5.6框架调整    public void setPassword(String password) 【Java EE】Struts2.1.6与Spring2.5.6框架调整{
25【Java EE】Struts2.1.6与Spring2.5.6框架调整        this.password = password;
26【Java EE】Struts2.1.6与Spring2.5.6框架调整    }

27【Java EE】Struts2.1.6与Spring2.5.6框架调整
28【Java EE】Struts2.1.6与Spring2.5.6框架调整