【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
<?
xml version="1.0" encoding="GBK"
?>
2
<!
DOCTYPE struts PUBLIC
3
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4
"http://struts.apache.org/dtds/struts-2.0.dtd"
>
5
6
<
struts
>
7
<
package
name
="struts2"
extends
="struts-default"
>
8
9
</
package
>
10
</
struts
>
<?
xml version="1.0" encoding="GBK"
?>
2
<!
DOCTYPE struts PUBLIC3
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"4
"http://struts.apache.org/dtds/struts-2.0.dtd"
>
5

6
<
struts
>
7
<
package
name
="struts2"
extends
="struts-default"
>
8

9
</
package
>
10
</
struts
>
4、配置web.xml
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
<
web-app
version
="2.5"
xmlns
="http://java.sun.com/xml/ns/javaee"
3
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
4
xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee
5
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
6
7
<
filter
>
8
<
filter-name
>
struts2
</
filter-name
>
9
<
filter-class
>
10
org.apache.struts2.dispatcher.FilterDispatcher
11
</
filter-class
>
12
</
filter
>
13
<
filter-mapping
>
14
<
filter-name
>
struts2
</
filter-name
>
15
<
url-pattern
>
/*
</
url-pattern
>
16
</
filter-mapping
>
17
18
<
welcome-file-list
>
19
<
welcome-file
>
index.jsp
</
welcome-file
>
20
</
welcome-file-list
>
21
</
web-app
>
5、引入Spring包,在dist目录下
<?
xml version="1.0" encoding="UTF-8"
?>
2
<
web-app
version
="2.5"
xmlns
="http://java.sun.com/xml/ns/javaee"
3
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
4
xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 5
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
6

7
<
filter
>
8
<
filter-name
>
struts2
</
filter-name
>
9
<
filter-class
>
10
org.apache.struts2.dispatcher.FilterDispatcher11
</
filter-class
>
12
</
filter
>
13
<
filter-mapping
>
14
<
filter-name
>
struts2
</
filter-name
>
15
<
url-pattern
>
/*
</
url-pattern
>
16
</
filter-mapping
>
17

18
<
welcome-file-list
>
19
<
welcome-file
>
index.jsp
</
welcome-file
>
20
</
welcome-file-list
>
21
</
web-app
>
spring.jar
6、在src目录下建立三个文件
applicationContext-actions.xml
applicationContext-beans.xml
applicationContext-common.xml
这三个文件其实是applicationContext.xml的分解,为的是避免所有配置放在同一文件,造成混乱。
结构均如下:
1
<?
xml version="1.0" encoding="GBK"
?>
2
3
<
beans
xmlns
="http://www.springframework.org/schema/beans"
4
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
5
xmlns:context
="http://www.springframework.org/schema/context"
6
xmlns:tx
="http://www.springframework.org/schema/tx"
7
xmlns:aop
="http://www.springframework.org/schema/aop"
8
xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
9
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
10
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
11
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
>
12
13
</
beans
>
<?
xml version="1.0" encoding="GBK"
?>
2

3
<
beans
xmlns
="http://www.springframework.org/schema/beans"
4
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
5
xmlns:context
="http://www.springframework.org/schema/context"
6
xmlns:tx
="http://www.springframework.org/schema/tx"
7
xmlns:aop
="http://www.springframework.org/schema/aop"
8
xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd9
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd10
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 11
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
>
12

13
</
beans
>
7、需要在web.xml进行配置
<
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
>
8、需要引入Struts2中的另一个包
struts2-spring-plugin-2.1.6.jar
9、测试是否整合成功
(1)建立页面login.jsp、welcome.jsp、error.jsp分别为登录页面、登录成功页面、出错页面
login.jsp
1
<%
@ page language="java" contentType="text/html; charset=GB18030"
2
pageEncoding="GB18030"
%>
3
<%
@ taglib prefix="s" uri="/struts-tags"
%>
4
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
>
5
<
html
>
6
<
head
>
7
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=GB18030"
>
8
<
title
>
登录页面
</
title
>
9
</
head
>
10
<
body
>
11
<
s:form
action
="login"
method
="post"
>
12
<
s:textfield
name
="username"
label
="username"
/>
13
<
s:password
name
="password"
label
="password"
/>
14
<
s:submit
value
="submit"
/>
15
</
s:form
>
16
</
body
>
17
</
html
>
welcome.jsp
<%
@ page language="java" contentType="text/html; charset=GB18030"2
pageEncoding="GB18030"
%>
3

<%
@ taglib prefix="s" uri="/struts-tags"
%>
4
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
>
5
<
html
>
6
<
head
>
7
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=GB18030"
>
8
<
title
>
登录页面
</
title
>
9
</
head
>
10
<
body
>
11
<
s:form
action
="login"
method
="post"
>
12
<
s:textfield
name
="username"
label
="username"
/>
13
<
s:password
name
="password"
label
="password"
/>
14
<
s:submit
value
="submit"
/>
15
</
s:form
>
16
</
body
>
17
</
html
>
1
<%
@ page language="java" contentType="text/html; charset=GB18030"
2
pageEncoding="GB18030"
%>
3
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
>
4
<
html
>
5
<
head
>
6
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=GB18030"
>
7
<
title
>
登录成功
</
title
>
8
</
head
>
9
<
body
>
10
用户名:${username }
11
<
br
>
12
密码:${password }
13
<
br
>
14
</
body
>
15
</
html
>
<%
@ page language="java" contentType="text/html; charset=GB18030"2
pageEncoding="GB18030"
%>
3
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
>
4
<
html
>
5
<
head
>
6
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=GB18030"
>
7
<
title
>
登录成功
</
title
>
8
</
head
>
9
<
body
>
10
用户名:${username }11
<
br
>
12
密码:${password }13
<
br
>
14
</
body
>
15
</
html
>
(2)建包com.test.manager和com.test.manager.impl分别存放业务逻辑处理的接口和其实现,分别建立接口LoginManager.java和其实现LoginManagerImpl.java
LoginManager.java
1
package
com.test.manager;
2
3
public
interface
LoginManager
{
4
public boolean isLogin(String username, String password);
5
}
LoginManagerImpl.java,只是测试用,判断用户名密码是否为intrl、intrl,若是则登录成功
package
com.test.manager;2

3

public
interface
LoginManager
{4
public boolean isLogin(String username, String password);5
}
1
package
com.test.manager.impl;
2
3
import
com.test.manager.LoginManager;
4
5
public
class
LoginManagerImpl
implements
LoginManager
{
6
public boolean isLogin(String username, String password)
7
{
8
if(null!=username&&null!=password&&"intrl".equals(username.trim())&&"intrl".equals(password.trim()))
9
{
10
return true;
11
}
12
return false;
13
}
14
}
(3)在applicationContext-beans.xml把实现类配置上,以让Spring进行管理
package
com.test.manager.impl;2

3
import
com.test.manager.LoginManager;4

5

public
class
LoginManagerImpl
implements
LoginManager
{6
public boolean isLogin(String username, String password)7

{8
if(null!=username&&null!=password&&"intrl".equals(username.trim())&&"intrl".equals(password.trim()))9

{10
return true;11
}12
return false;13
}14
}
<
bean
id
="loginManager"
class
="com.test.manager.impl.LoginManagerImpl"
>
</
bean
>
包含从页面所接收参数username、password,以及业务逻辑处理类LoginManager类型的loginManager,给username和password设置get、set,给loginManager设置set方法,以让Spring为我们自动注入;overwrite父类中的
1
package
com.test.action;
2
3
import
com.opensymphony.xwork2.ActionSupport;
4
import
com.test.manager.LoginManager;
5
6
@SuppressWarnings(
"
serial
"
)
7
public
class
LoginAction
extends
ActionSupport
{
8
private LoginManager loginManager;
9
private String username;
10
private String password;
11
12
public String getUsername()
{
13
return username;
14
}
15
16
public void setUsername(String username)
{
17
this.username = username;
18
}
19
20
public String getPassword()
{
21
return password;
22
}
23
24
public void setPassword(String password)
{
25
this.password = password;
26
}
27
28
public void setLoginManager(LoginManager loginManager)
{
29
this.loginManager = loginManager;
30
}
31
32
@Override
33
public String execute() throws Exception
{
34
35
if(loginManager.isLogin(username, password))
36
{
37
return SUCCESS;
38
}
39
return INPUT;
40
}
41
}
(5)在applicationContext-actions.xml中进行配置,也让Spring来管理LoginAction
package
com.test.action;2

3
import
com.opensymphony.xwork2.ActionSupport;4
import
com.test.manager.LoginManager;5

6
@SuppressWarnings(
"
serial
"
)7

public
class
LoginAction
extends
ActionSupport
{8
private LoginManager loginManager;9
private String username;10
private String password;11

12

public String getUsername()
{13
return username;14
}15

16

public void setUsername(String username)
{17
this.username = username;18
}19

20

public String getPassword()
{21
return password;22
}23

24

public void setPassword(String password)
{25
this.password = password;26
}27

28

public void setLoginManager(LoginManager loginManager)
{29
this.loginManager = loginManager;30
}31
32
@Override33

public String execute() throws Exception
{34

35
if(loginManager.isLogin(username, password))36

{37
return SUCCESS;38
}39
return INPUT;40
}41
}
<
bean
id
="loginAction"
class
="com.test.action.LoginAction"
scope
="prototype"
>
<
property
name
="loginManager"
ref
="loginManager"
></
property
>
</
bean
>
1
<?
xml version="1.0" encoding="GBK"
?>
2
<!
DOCTYPE struts PUBLIC
3
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4
"http://struts.apache.org/dtds/struts-2.0.dtd"
>
5
6
<
struts
>
7
<
package
name
="struts2"
extends
="struts-default"
>
8
<
action
name
="login"
class
="loginAction"
>
9
<
result
name
="success"
>
welcome.jsp
</
result
>
10
<
result
name
="input"
>
login.jsp
</
result
>
11
<
result
name
="error"
>
error.jsp
</
result
>
12
</
action
>
13
</
package
>
14
</
struts
>
<?
xml version="1.0" encoding="GBK"
?>
2
<!
DOCTYPE struts PUBLIC3
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"4
"http://struts.apache.org/dtds/struts-2.0.dtd"
>
5

6
<
struts
>
7
<
package
name
="struts2"
extends
="struts-default"
>
8
<
action
name
="login"
class
="loginAction"
>
9
<
result
name
="success"
>
welcome.jsp
</
result
>
10
<
result
name
="input"
>
login.jsp
</
result
>
11
<
result
name
="error"
>
error.jsp
</
result
>
12
</
action
>
13
</
package
>
14
</
struts
>
(7)此时目录结构如下:

(8)部署项目Tomcat服务器,启动服务器,进入登录页面,进行登录测试:
若用户名密码不为intrl/intrl,则登录失败,返回登录页面,注意地址栏的变化

若输入intrl/intrl则登录成功,跳至welcome.jsp页面,显示用户名和密码

10、以上结果证明,Struts2.1.6与Spring2.5.6框架整合成功
11、源代码下载
http://www.rayfile.com/files/b82cd5e3-66b2-11de-836f-0014221b798a/
本文介绍如何在MyEclipse中整合Struts2.1.6与Spring2.5.6框架,包括所需包的导入、配置文件的设置、业务逻辑处理、Action创建及测试流程。
119

被折叠的 条评论
为什么被折叠?



