view plain
<
plug-in
classname
="org.springframework.web.struts.contextloaderplugin"
>
<
set-property
property
="contextconfiglocation"
value
=/>
plug-in
>
寫action:
view plain
public
class
loginaction
extends
actionsupport
return
arg0.findforward(
"false"
);
} }
view plain
<
>
<
action
path
="/login"
type
="web.action.loginaction"
name
="loginform"
scope
="request"
validate
="true"
input
="/login.jsp"
>
<
forward
name
="false"
path
="/login.jsp"
/>
<
forward
name
="success"
path
="/userdetail.jsp"
/>
action
>
<
action
path
="/welcome"
forward
="/welcome.jsp"
/>
>
可以看到上面的loginaction需要userservice,但是我們已經不再採用
userservice service = new userserviceimpl();的寫法了.userservice交給spring管理.
view plain
<
beanid=
"userservice"
class
="web.service.userserviceimpl"
/>
這種做法的好處是簡單易上手,最符合常規的思維.不是要spring管理業務元件麼? 那就在action中獲得spring上下文即可. 但是這種做法卻和spring的api耦合在一起了.離開了spring這個loginaction就沒用了. 還有一點就是這種方式還可以通過contextloaderlistener來實現,而且不必使action和spring耦合在一起.具體怎麼做就不多說了.在web.xml中配置contextloaderlistener
2第二種做法; 替換請求處理器,先來思考一下struts處理請求的流程:actionservlet獲得請求*.do, actionservlet把請求委託給requestprocessor, requestprocessor根據請求的path在配置檔案中找到對應的action並例項化它. 呼叫action的execute方法返回forward.如果對這個過程有疑問,可以閱讀一下actionservlet和requestprocessor源**.
如果可以改寫一下請求處理器requestprocessor, 讓它在獲得action例項的時候從spring容器中獲得spring託管的action,則spring不僅可以管理業務元件,還可以管理action, 第二種做法正是這樣做的.
在struts中配置controller用來替換預設的requestprocessor,
view plain
<
controller
processorclass
="org.springframework.web.struts.delegatingrequestprocessor"
/>
loginaction按照struts的寫法,繼承自action. 同時對它依賴的元件userservice也不需要獲取它的例項.
其他配置照舊. 執行, 測試.
3 第三種做法: 使用spring的**action
delegatingactionproxy.這種做法是: struts的**都不要動,不需要覆蓋requestprocessor,loginaction仍然繼承自action, 只需要在struts-config.xml上改一下action的type:
view plain
<
>
<
action
path
="/login"
type
="org.springframework.web.struts.delegatingactionproxy"
name
="loginform"
scope
="request"
validate
="true"
input
="/login.jsp"
>
<
forward
name
="false"
path
="/login.jsp"
/>
<
forward
name
="success"
path
="/userdetail.jsp"
/>
action
>
<
action
path
="/welcome"
forward
="/welcome.jsp"
/>
>
這個delegatingactionproxy可以查詢spring上下文中配置的action,並執行它的execute方法.
Spring整合Struts詳解
spring雖然也提供了自已的mvc元件,但一來spring的mvc元件過於繁瑣,二來是struts的使用者眾多,因此,很多專案還是選擇使用spring整合struts框架,而且spring可以無縫的整合strtus框架,二者結合成乙個更實際的j2ee開發平台 使用spring的web應用時,不用手...
Struts與Spring的整合
struts核心是mvc,struts與spring的整合就是把struts的action交給spring去管理,從而達到簡化程式的目的 一 配置spring上下文和監聽 配置spring上下文和監聽有兩種方式 方式一 web.xml web主要配置檔案 而主要用於監聽web的上下文,可用下面 代替...
spring和struts的整合
struts 2框架整合spring很簡單,下面是整合的步驟。1.複製檔案。複製struts2 spring plugin x x x.jar和spring.jar到web inf lib目錄下。其中的x對應了spring的版本號。還需要複製commons logging.jar檔案到web inf...