struts整合spring的3中方法

2021-05-26 13:13:10 字數 3828 閱讀 6698

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...