struts spring 整合
論壇中用struts+spring的人不少,以前的帖子也有問過struts+spring的整合方式。前面的帖子中readonly老大曾經提到過spring2.0新增加的乙個整合方式。今天簡單把這幾種整合方式小結一下。
下面著重談一下spring2.0新增的乙個整個方式,我感覺挺不錯,可以完全將struts的配置和spring的配置分離。具體步驟如下:
引用<?xml version="1.0" encoding="utf-8"?>
這看上去就和普通的spring配置檔案沒有任何分別。
2. 編寫struts的配置檔案struts-config.xml,注意其中的controller的配置,用到了spring2.0的新特性。
引用<?xml version="1.0" encoding="utf-8"?>
type="com.bearingpoint.gdc.zero.action.user.adduser"
scope="request"
>
3. 然後為你的struts的action注入你需要的service
引用private userservice userservice;
user user = new user();
userservice.adduser(user);
} /**
* @param userservice
* the userservice to set.
*/ public void setuserservice(userservice userservice)
看上去你好像啥都沒做,而事實上,注入工作已經由autowiringrequestprocessor自動完成。
4. 編寫web.xml進行測試。
引用?xml version="1.0" ?>
org.springframework.web.context.contextloaderlistener
struts
org.apache.struts.action.actionservlet
config
/web-inf/classes/struts-config.xml
detail 2
validate
true 2
*.do
index.jsp
最後,啟動jetty進行測試,順利執行通過!
看上去如此簡單,配置起來也沒有什麼很特別的地方,只是按照常規來寫你的spring和struts的配置檔案就好了。
不過在這裡還是說一下其中的要注意兩個問題:
1. 這種autowire的注入支援兩種不同的方式,分別是byname和bytype,預設是bytype。我想這對於絕大多數開發者來說是夠了。 對於byname的形式,就在web.xml中新增
autowire
byname
即可2. 鑑於在中所提到的opensessioninview模式的失效的問題。我仔細看了一下spring的原始碼。對於這種autowire的整合方式,不推薦在struts-config.xml檔案中配置contextloaderplugin,而是採用web.xml中的contextloaderlistener來載入spring的初始化配置。否則,你的opensessioninview模式可能會失效。
3.可以建立乙個baseaction類...把setter都放到裡面去
4.對於aciton 的execute方法以外的方法呼叫,spring將不能完成自動注入。
struts spring整合測試
struts spring整合有3種方式,通過查閱資料得知,將servlet action 委託給spring來管理的這種方式優勢最為顯著.本次struts spring整合測試就是採用委託的方法。實施步聚 首先在struts config.xml檔案中註冊spring外掛程式,如下所示。plug ...
struts spring整合測試
b url 百事通資訊網 url b struts spring整合有3種方式,通過查閱資料得知,將servlet action 委託給spring來管理的這種方式優勢最為顯著.本次struts spring整合測試就是採用委託的方法。實施步聚 首先在struts config.xml檔案中註冊sp...
struts spring 整合方式
1.第一種實現方法 1 將 struts 的業務邏輯控制器類配置在 spring 的配置檔案中,業務邏輯控制器中引用的業務類一併注入。注意,必須將業務邏輯控制器類配置為 scope prototype 示例如下 2 在 struts.xml 或者等效的 struts2 配置檔案中配置 action ...