Struts + Spring整合3种方法亲身实践(1)
由于最近要做一个项目,用到struts, spring, hibernate;之前我做项目,只用过struts ,hibernate(很落后的表现,呵呵!),所以呢下定决心,练了一把,先写一个最简单的struts程序,输入页面:input.do, 一个文本框,输入信息后,点确确定,跳转到另一页面,显示welcome,**,够简单了吧!为了开发简便快捷,我是在eclipse+myeclipse下完成的,下面我把代码贴出,再加点解释:
Struts-config.xml
<
struts-config
>
<
data-sources
/>
<
form-beans
>
<
form-bean
name
=
"helloWorld"
type
=
"com.yourcompany.struts.form.HelloWorldForm"
/>
</
form-beans
>
<
action-mappings
>
<
action
attribute
=
"helloWorld"
name
=
"helloWorld"
path
=
"/helloWorld"
scope
=
"request"
type
=
"com.yourcompany.struts.action.HelloWorldAction"
>
<
forward
name
=
"show"
path
=
"/show.jsp"
/>
</
action
>
<
action
forward
=
"/input.jsp"
path
=
"/input"
/>
</
action-mappings
>
<
message-resources
parameter
=
"ApplicationResources"
/>
</
struts-config
>
很简单的一个结构,一个input.do进入的输入页面input.jsp,击点确定,跳转到helloworld.do,经他处理后,跳转到show, that’s OK!
web.xml
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
web-app
xmlns
=
"http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
version
=
"2.4"
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
servlet
>
<
servlet-name
>
action
</
servlet-name
>
<
servlet-class
>
org.apache.struts.action.ActionServlet
</
servlet-class
>
<
init-param
>
<
param-name
>
config
</
param-name
>
<
param-value
>
/WEB-INF/struts-config.xml
</
param-value
>
</
init-param
>
<
init-param
>
<
param-name
>
debug
</
param-name
>
<
param-value
>
3
</
param-value
>
</
init-param
>
<
init-param
>
<
param-name
>
detail
</
param-name
>
<
param-value
>
3
</
param-value
>
</
init-param
>
<
load-on-startup
>
0
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
action
</
servlet-name
>
<
url-pattern
>
*.do
</
url-pattern
>
</
servlet-mapping
>
<
jsp-config
>
<
taglib
>
<
taglib-uri
>
/tags/struts-bean
</
taglib-uri
>
<
taglib-location
>
/WEB-INF/struts-bean.tld
</
taglib-location
>
</
taglib
>
<
taglib
>
<
taglib-uri
>
/tags/struts-html
</
taglib-uri
>
<
taglib-location
>
/WEB-INF/struts-html.tld
</
taglib-location
>
</
taglib
>
</
jsp-config
>
</
web-app
>
HelloWorldAction
类
:
package com.yourcompany.struts.action;
//节省长度,导入的类就不贴了
public
class
HelloWorldAction
extends
Action {
public
ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HelloWorldForm helloworld=(HelloWorldForm)form;
request.setAttribute(
"helloWorld"
, helloworld.getMsg());
return
mapping.findForward(
"show"
);
}
}
HelloWorldForm
类
:
package
com.yourcompany.struts.form;
public
class
HelloWorldForm
extends
ActionForm {
private
static
final
long
serialVersionUID
= 1L;
private
String
msg
;
public
ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
return
null
;
}
public
void
reset(ActionMapping mapping, HttpServletRequest request) {
}
public
String getMsg() {
return
msg
;
}
public
void
setMsg(String msg) {
this
.
msg
= msg;
}
}
input.jsp
<%@
page
language
=
"java"
pageEncoding
=
"ISO-8859-1"
%>
<%@
taglib
uri
=
"/tags/struts-bean"
prefix
=
"bean"
%>
<%@
taglib
uri
=
"/tags/struts-html"
prefix
=
"html"
%>
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html:html
lang
=
"true"
>
<
head
>
<
html:base
/>
<
title
><
bean:message
key
=
"title_input"
/></
title
>
</
head
>
<
body
>
<
html:form
action
=
"/helloWorld"
method
=
"POST"
>
<
bean:message
key
=
"welcome"
/><
html:text
property
=
"msg"
/>
<
html:submit
>
sumbit
</
html:submit
>
</
html:form
>
</
body
>
</
html:html
>
show.jsp
<%@
page
language
=
"java"
pageEncoding
=
"ISO-8859-1"
%>
<%@
taglib
uri
=
"/tags/struts-bean"
prefix
=
"bean"
%>
<%@
taglib
uri
=
"/tags/struts-html"
prefix
=
"html"
%>
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html:html
lang
=
"true"
>
<
head
>
<
html:base
/>
<
title
><
bean:message
key
=
"title_show"
/></
title
>
</
head
>
<
body
>
<
bean:message
key
=
"input"
/>
"${helloWorld}"
<
br
/>
</
body
>
</
html:html
>
无论哪种方法都要在
struts-config.xml
里注册一下
Spring
插件
:
在
struts-config.xml
中加上
: (
红色为加入部分
)
<
message-resources
parameter
=
"ApplicationResources"
/>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
</
struts-config
>
为了体现
Spring
的
IOC,
我们再加多几个类
:
一个接口:
一个接口:
package
com.yourcompany.struts.action;
import
com.yourcompany.struts.form.HelloWorldForm;
public
interface
HelloWorldService {
public
abstract
String addMesg(HelloWorldForm helloworld);
}
实现这个接口的类:
package
com.yourcompany.struts.action;
import
com.yourcompany.struts.form.HelloWorldForm;
public
class
HelloWorldServiceImpl
implements
HelloWorldService{
public
String addMesg(HelloWorldForm helloworld) {
return
helloworld.getMsg();
}
}
Spring
的配置文件
: (
位置
/WEB-INF/applicationContext.xml
)
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!
DOCTYPE
beans
PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd"
>
<
beans
>
<
bean
id
=
"helloWorldService"
class
=
"com.yourcompany.struts.action.HelloWorldServiceImpl"
></
bean
>
</
beans
>
准备工作完成
,
下一步开始整合