Struts 2實作類別似ThinkPHP的MVC開發方式
ThinkPHP是PHP的一個MVC開源架構,Struts 2是Java的MVC開源架構。雖然程式設計語言不同,但是他們都是解決同樣的問題。
用過ThinkPHP的同學應該都知道,ThinkPHP是一個非常簡單的架構,使用起來很舒服。相對來說Struts 2則沒有這麼簡單。
本文介紹如何配置Struts 2,讓它使用起來像ThinkPHP一樣簡單。
在介紹Struts 2之前,首先瞭解一下ThinkPHP的開發方式。
和Struts 2一樣,ThinkPHP也需要用Action來充當控制器(controller),需要頁面來充當視圖(view)。
下面是一個簡單的ThinkPHP工程的目錄結構:
其中Action目錄下就是控制器,其功能和Struts 2的Action類似。Tpl目錄下是html頁面,也就是視圖,類似於jsp頁面的功能。
再看其中一個Action的代碼:
display ();}public function add() {/** * 邏輯代碼... */$this->display ();}public function delete() {/** * 邏輯代碼... */$this->display ();}public function update() {/** * 邏輯代碼... */$this->display ();}}?>
此時在瀏覽器輸入http://localhost/First/update,就可以調用FirstAction的update方法處理請求,再調用Tpl/First/update.html顯示。
也就是說,如果需要加一個功能模組Abc,只需要添加一個AbcAction.class.php,其中加入操作函數def,再在Tpl/Abc檔案夾下建立一個檔案名稱和函數名稱一致的def.html檔案,下面就可以開發邏輯和頁面了,而且直接就可以用http://localhost/Abc/def訪問,非常方便。整個項目很清晰,想找的某個http地址對應的Action的函數以及html檔案也非常容易。
而Struts 2由於有struts.xml設定檔,如果加入一個功能模組,除了需要加入Action類和jsp頁面,還需要在struts.xml中配置這個Action對應的http地址、對應的Action中的方法、以及對應的jsp檔案。而如果想通過http地址找到對應的Action中的方法和jsp檔案,也需要查看struts.xml中的配置。
在Struts 2的使用中,約定大於配置是個很重要的原則。ThinkPHP的開發方式就是一個比較好的約定。下面就介紹如何用Struts 2實作類別似ThinkPHP的開發方式。
首先是struts.xml檔案的配置:
/Tpl/{1}/{2}.jsp
實作類別似ThinkPHP的開發方式,需要在struts.xml中用到Wildcards,也就是萬用字元。其中name="/*/*"匹配http地址。第一個*是Action的類名:class="com.xxg.action.{1}Action";第二個*是Action中方法的名稱:method="{2}",另外還是jsp的檔案名稱:/Tpl/{1}/{2}.jsp。
這裡設定了:
表示action的name中允許出現斜杠"/"。
下面是這個項目的目錄結構:
其中一個Action的代碼:
package com.xxg.action;import com.opensymphony.xwork2.ActionSupport;public class FirstAction extends ActionSupport {public String show() {/** * 邏輯代碼... */return SUCCESS;}public String add() {/** * 邏輯代碼... */return SUCCESS;}public String delete() {/** * 邏輯代碼... */return SUCCESS;}public String update() {/** * 邏輯代碼... */return SUCCESS;}}
如此一來,在開發的過程中,所要做的就和ThinkPHP類似,加入Action,加入對應的方法,再添加一個和方法名同名的jsp檔案,直接存取地址:http://localhost/Action名稱/方法名稱就可以直接存取,不再需要向struts.xml檔案中添加action。另外,通過http地址也很容易找到對應的Action其中的方法以及對應的jsp檔案,也不再需要查詢struts.xml。
作者:叉叉哥 轉載請註明出處:http://blog.csdn.net/xiao__gui/article/details/21073605
-
2樓JPFRMD3小時前
-
很好的文章,下次好好看看
-
1樓5iasp4小時前
-
不錯,很靈活.