- 論壇徽章:
- 0
|
· php.MVC系列教程之控制器
· php.MVC系統(tǒng)教程之配置文件
· php.MVC系列教程之對象關系
· php.MVC系列教程之目錄文件
· php.MVC系列教程之處理流程
· php.MVC系列教程之框架介紹
· php.MVC系列教程之安裝配置
· php.MVC系列教程之前言
一,前言:
ASP,JSP,PHP是WEB開發(fā)的三大技術,三種技術優(yōu)缺點也早就有人分析過了。無非也就是ASP簡單易用且有microsoft做靠山,JSP功能強大是因為有java支持,PHP則開源跨平臺。在國內,ASP應用范圍最廣,JSP發(fā)展勢頭最猛,PHP則處于劣勢。這可能與公司的支持以及技術的培訓有關。
由于公司項目的需要,我這才接觸PHP,用過一段時間后兩點體會最深刻,一是學習容易,上手極快,內置函數(shù)很多,適合快速開發(fā);二是學習資料匱乏,普及不廣,很多時候都要去看英文文檔。
對于中小型WEB應用來說,PHP有很強的競爭力,LINUX+APACHE+MYSQL+PHP(LAMP)的組合幾乎可以勝任絕大多數(shù)網站的解決方案,對于大型應用來講,對于系統(tǒng)架構要求更高,需要有成熟的框架支持,JSP的struts是個不錯的框架,國內介紹它的資料也非常多,應用逐漸廣泛起來,對應的PHP也有php.MVC,但是我搜遍了網絡也沒有發(fā)現(xiàn)一篇中文文檔,這才讓我動了翻譯用戶指南念頭,也算是拋磚引玉,希望PHP能夠在國內蓬勃發(fā)展起來。
php.MVC是PHP Web應用程序的一個開源框架,它實現(xiàn)了模型-視圖-控制器(MVC)設計模式——Web應用程序的工業(yè)標準,鼓勵基于Model2架構的應用程序設計。這種開發(fā)模式允許網頁或其他顯示內容從內部應用程序代碼中分離出來,讓設計者和程序員更容易地集中于他們各自的專業(yè)領域。這個框架提供了一個單獨入口點的控制器。這個控制器接受HTTP請求,并根據配置文件分配給相應的動作處理。
模型包含了應用程序的業(yè)務邏輯,控制器負責處理請求,并轉向到相應的顯示組件——將HTML和PHP標簽的結合起來的模板文件。處理結果返回給客戶端瀏覽器,或者通過另外的協(xié)議比如SMTP。
php.MVC是用PHP來實現(xiàn)Jakarta Struts框架,目前它支持Struts的許多特性,包括申明應用程序的配置參數(shù)通過XML解析器。比如在XML配置文件中指定各種業(yè)務邏輯組件與對應的顯示組件之間的映射。
php.MVC的網站地址http://www.phpmvc.net
二,
[color="#000080"]php.MVC系列教程之安裝配置
php.MVC必須安裝在PHP v 4.1.0及以上版本的Web服務器上
Windows(Apache 2.0.51+php-4.3.9-Win32)
1.從
[color="#000080"]http://www.apache.org
下載相應的Apache版本。
2.從
[color="#000080"]http://www.php.net
下載相應的PHP版本。
3.從
[color="#000080"]http://www.phpmvc.net
下載相應的php.MVC版本。
4.建立目錄c:www作為Web服務器目錄,c:webapp作為Web根目錄,
你也可以定義自己的目錄,以下作相應的修改即可。
5.將Apache安裝到c:www,打開瀏覽器,在地址欄輸入
[color="#000080"]http://localhost
測試是否安裝成功
注意:如果你的系統(tǒng)上已經安裝有其他Web服務器(如IIS 5),且占用了80端口,請先停止該服務器。
6.把PHP壓縮包解壓到c:www。
7.將c:wwwphp-4.3.9-Win32目錄下php.ini-dist拷貝到系統(tǒng)目錄如c:winnt中并更名為php.ini,
將php4ts.dll拷貝到系統(tǒng)目錄如c:winntsystem32中,打開c:wwwApache GroupApache2conf目錄下http.conf文件,
在ScriptAlias /cgi-bin/ "c:/www/Apache Group/Apache2/cgi-bin/"下加入
ScriptAlias /php/ "c:/www/php-4.3.9-Win32/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"
并將DocumentRoot "c:wwwApache GroupApache2htdocs"改為DocumentRoot "c:/webapp"
8.把php.MVC壓縮包解壓到c:webapp
9.打開c:webappphpmvc目錄下Main.php文件,修改如下內容
// Set php.MVC library root directory
$appServerRootDir = 'c:webappphpmvc'; // no trailing slash
// Set the application path
$moduleRootDir = 'c:webappphpmvc'; // no trailing slash
// Set the OS Type [Optional] [UNIX|WINDOWS|MAC] if we have
// trouble detecting the server OS type. Eg: path errors.
$osType = 'WINDOWS';
確認c:webappphpmvcWEB-INF目錄下phpmvc-config.data有可寫權限。
打開瀏覽器,在地址欄輸入
[color="#000080"]http://localhost/phpmvc/Main.php?do=stdLogon
測試是否安裝成功。
10.要查閱更為詳細的安裝文檔,請看
[color="#000080"]http://www.phpmvc.net/docs/installIdx.php?doc=all
。
三、
[color="#000080"]php.MVC系列教程之框架介紹
:
一、介紹
php.MVC是一個開放源代碼的Web應用框架,實現(xiàn)了模型-視圖-控制器(MVC)設計模式,鼓勵基于Model2架構的應用程序設計。這種開發(fā)模式允許網頁或其他顯示內容從內部應用程序代碼中分離出來,讓網頁設計者和程序員更容易地集中于他們各自的專業(yè)領域。
這個框架提供了一個單獨入口點的控制器。這個控制器接受HTTP請求,并根據配置文件分配給相應的動作處理。模型則包含了應用程序的業(yè)務邏輯。當請求處理完成,控制器調用相應的顯示組件——通常用模板文件來實現(xiàn)。處理結果返回給客戶端瀏覽器,或者通過另外的協(xié)議比如SMTP。
php.MVC是用PHP來實現(xiàn)Jakarta Struts框架,目前它支持Struts的許多特性,包括通過XML解析器實現(xiàn)XML與對象的映射,從而設置應用程序的配置參數(shù)。比如在XML配置文件中指定各種業(yè)務邏輯組件與對應的顯示組件之間的映射。
![]()
圖1
圖1所示的邏輯圖描述了框架的高層結構。
可以看出框架包括三個主要的組件:前端控制器、主控制器和動作分配器。
二、優(yōu)/缺點
優(yōu)點:
1. php.MVC是一個開源項目能讓你完全接觸源代碼,使開發(fā)者能更深入的了解其內部實現(xiàn)機制。
2. 使用php.MVC可以促進模塊化開發(fā),促使開發(fā)者和設計者的角色分離,提高代碼的重用性和可維護性。
3. php.MVC框架的學習可以借鑒Jakarta Struts的一些知識和經驗,如果你有開發(fā)Struts的經驗,那么就可以快速地用php.MVC來進行開發(fā)。
4. MVC模式是Java開發(fā)Web應用程序的一個設計標準,使用php.MVC框架還有助于Web開發(fā)者理解MVC設計模式。
缺點:
1. php.MVC功能仍在不段變化和完善中,你需要隨時關注最新版本。
2. 使用php.MVC需要進行額外的學習過程。
3. 應用php.MVC可以得到清晰的程序結構,但也會增加系統(tǒng)復雜度。
4. 應用php.MVC可以讓程序更加有條理,但也會降低程序執(zhí)行速度。
因此你需要根據項目大小、周期、成本,開發(fā)人員素質等眾多條件來決定是否應用php.MVC框架。
四、
[color="#000080"]php.MVC系列教程之處理流程
:
php.MVC框架由許多類組裝而成,但是我們不必了解所有類的詳細工作過程也可以使用這個框架,圖2顯示了我們使用該框架需要了解的一些核心組件。
![]()
圖2
從圖2我們可以看到一個典型的Web瀏覽器的HTTP請求如何與我們應用程序框架的核心類進行交互,然后如何得到HTTP響應返回到Web瀏覽器。
現(xiàn)在,讓我們以一個實例來了解框架的處理流程。比如要查看公司銷售報表,先在瀏覽器地址欄輸入
[color="#000080"]http://www.myhost.com/mycompany/Main.php?do=salesReport
客戶端便發(fā)送給php.MVC應用程序一個請求。應用程序框架的控制器處理這個請求,分析查詢字符串,取出請求路徑關鍵字。在這個實例中,路徑為salesReport。后面我們將看到如何通過XML配置文件來配置必需的應用行為,綁定表單驗證,業(yè)務邏輯處理和顯示組件。
如果我們想嚴格控制只有通過驗證的人才能訪問這個報表,則用戶必須先輸入基本的驗證信息,通常是用戶名和密碼。為了限制只有通過了驗證的用戶才能訪問該報表,這里用了一個被稱作ActionForm的類,我們需要繼承框架的ActionForm來定義自己的表單驗證類,比如SalesActionForm,如下所示:
class SalesActionForm extends ActionForm { ... }.
在SalesActionForm類里我們要檢查用戶是否可信任的以決定下一步動作。如果用戶沒有通過驗證,我們將重定向到初始頁面要求重新輸入;如果他通過了驗證,控制器會通過Action類來調用業(yè)務處理類。
我們通過繼承框架Action類來進行自定義,比如SalesAction,如下所示:
class SalesAction extends Action { ... }.
在XML配置文件中我們要定義請求與Action類的對應關系,這樣控制器找到相應的Action類,這里調用SalesAction。在SalesAction類里我們能訪問業(yè)務處理類和數(shù)據源。本例中我們從數(shù)據庫中取得銷售數(shù)據,制成報表格式。例如:我們創(chuàng)建一些對象,后面在銷售報表模板中可以使用這些對象,如下所示:
// Sales report items - per zone (individual object instances):
$item1 = new Item('Northern Zone Sales' , $salesNorth);
$item2 = new Item('Southern Zone Sales' , $salesSouth);
...
當我們完成了銷售報表,就要通過控制器指定顯示組件顯示出來。這是通過一個在XML配置文件中已經配置好的被稱作Forward的對象的來完成,如下所示:
return $mapping->findForwardConfig('salesReportSuccess');
Forward對象包含了銷售報表模板的路徑,比如salesReport.tpl,這也是在配置文件中定義。
然后控制器將請求轉向到ActionDispatcher,由它定向到指定的顯示組件,在本例中是salesReport.tpl,在模板中通過訪問先前定義對象和變量從而得到在SalesAction里準備好的數(shù)據。
下面顯示我們如何用phpTAL模板系統(tǒng)訪問報表數(shù)據并生成顯示視圖,對象$item1我們用類變量$item1->value
...
Sales report->value will appear here
...
最后將處理結果通過HTTP發(fā)送到客戶端瀏覽器,從而也就完成了整個處理過程。
五、
[color="#000080"]php.MVC系列教程之目錄文件
現(xiàn)在讓我們來分析一個典型的php.MVC Web應用程序的結構。
圖3顯示了如何布置一個php.MVC應用程序和其核心類庫
![]()
圖3
php.MVC類庫
從上圖我們可以看到php.MVC類庫被安裝在服務器的DEV目錄下,這個目錄用來放置一些通用類庫。為了安全起見,該目錄不允許Web用戶訪問,因此最好不要將該目錄建立在Web根目錄。如果由于某種原因需要將php.MVC類庫安裝在Web 根目錄,那你必須用.htaccess文件來控制其訪問對象。
下面顯示的是Apache的.htaccess文件
# options the .htaccess files in directories can override.
# Edit apache/conf/httpd.conf to AllowOverride in .htaccess
# AllowOverride AuthConfig
# Stop the directory list from being shown
Options -Indexes
# Controls who can get stuff from this server.
Order Deny,Allow
Deny from all
Allow from localhost
這將指示Apache服務器
拒絕所有人訪問包含有該.htaccess的目錄及其子目錄,在本例中是php.MVC類庫的/WEB-INF目錄下包含的文件及子目錄。
允許從服務器主機可以訪問,這允許使用Web 服務器的開發(fā)者能夠瀏覽該類庫下的測試目錄以及執(zhí)行單元測試。
php.MVC文件不必做任何修改即可正常使用,為了能夠訪問到類庫文件,我們需要在Web應用程序的Main.php文件中設置php.MVC類庫根目錄,如下所示:
$appServerRootDir = 'D:/Dev/PHP/phpmvc-base'; // no trailing slash
php.MVC Web應用程序
從圖3我們可以看出一個Web應用程序目錄SalesReport被放置在Web根目錄WWW下。
在SalesReports下的一級目錄下我們可以看到幾個目錄和Main.php文件,art目錄用來存放應用圖像,style目錄用來存放樣式表,這兩個目錄可以通過Web訪問,并且可以根據實際需要重新命名,我們能夠在模板文件中訪問這些資源,如下所示:
接下來是WEB-INF目錄,該目錄存放應用類和資源。它不能通過Web訪問,這是通過.htaccess文件來實現(xiàn)的。開發(fā)者可以在該目錄下自由創(chuàng)建目錄及子目錄,但需要在WEB-INF目錄下的ModulePaths.php中聲明。在WEB-INF目錄下,class目錄用來存放應用類和資源文件,tpl目錄用來存放顯示資源,比如網頁模板。
在WEB-INF目錄下還有.htaccess,ModulePaths.php, phpmvc-config.xml, phpmvc-config_1_1.dtd, phpmvc-config.data and prepend.php files。其中.htaccess文件已經在前面討論過了。
ModulePaths.php文件用來定義指定應用類及資源的路徑,我們可以象下面一樣定義:
$appDirs = array();
$appDirs[] = ''; // starting with the sub-application home directory
$appDirs[] = 'WEB-INF';
$appDirs[] = 'WEB-INF/classes';
$appDirs[] = 'WEB-INF/tpl';
phpmvc-config.xml文件是php.MVC應用程序的中心組件,可以通過XML來定義應用程序的行為和屬性,在后面將有更為詳細的介紹。
phpmvc-config_1_1.dtd文件是phpmvc-config.xml的文檔類型定義文件,DTD文件指定了在phpmvc-config.xml文件中可以包含的節(jié)點,它是應用程序行為和屬性的最終參照。大部分XML編輯器都可以用DTD文件來驗證phpmvc-config.xml文件的有效性。
phpmvc-config.data文件包含了應用程序的一些配置數(shù)據,這些配置數(shù)據是根據phpmvc-config.xml文件的最新信息動態(tài)生成的。假如你的應用程序得不到期望結果時,可以在phpmvc-config.xml中增加空格鍵以修改它,重新運行應用程序時配置數(shù)據就會被重新生成。
prepend.php文件常用來包含應用文件,前面,我們已經包含了應用類和模板文件,我們可以用它來包含其他類和資源文件,如下:
include_once 'Locale.php';
include_once 'PropertyMessageResources.php';
Main.php就是php.MVC應用程序的那個單一入口點,它被放置在應用程序根目錄。所有的請求都需要通過它來完成。
從上面我們可以看出,Main.php文件中必須定義php.MVC類庫的路徑
$appServerRootDir = 'D:/Dev/PHP/phpmvc-base'; // no trailing slash
接下來我們將指定應用程序路徑
$moduleRootDir = 'C:/WWW/SalesReports'; // no trailing slash
我們也可以設置應用程序的ActionDispatcher路徑。每個php.MVC應用程序通常都要自定義一個
ActionDispatcher來處理指定的請求,我們需要定義ActionDispatcher變量,如下所示:
$actionDispatcher = 'ReportActionDispatcher';
$osType變量用于指定php.MVC所在主機的操作系統(tǒng)類型,通常框架能夠自動檢測出來并以此來設置應用路徑,但是如果你的應用程序運行出現(xiàn)路徑錯誤,請手工設置該變量。如下所示:
$osType = 'UNIX';
正常情況下,包含在Main.php中的其它參數(shù)可以不做修改。
六、
[color="#000080"]php.MVC系列教程之對象關系
圖4顯示了從開發(fā)者的角度來看php.MVC示例程序中主要類和資源,以及它們之間的關系。
![]()
圖4
在上圖左上角是ActionForm類,我們通過繼承它來處理HTML表單驗證和與之相關的功能。示例中通過繼承ActionForm定義了一個基類AbstractBaseForm,它包含一些通用的邏輯,可以為更多的應用程序ActionForm類所引用,比如SalesReportForm類就具體實現(xiàn)了AbstractBaseForm類。
在上圖上方是Action類,通常用來處理通過ActionForm類完成了初始化驗證的請求。我們再次看到了繼承Action定義的基類AbstractBaseAction,SalesReportAction類繼承AbstractBaseAction用來處理請求,在SalesReportAction類中我們能調用業(yè)務邏輯類ReportBusinessClass,訪問數(shù)據庫和其他資源。
在上圖下方是ActionDispatcher類,負責為Action請求準備顯示資源如網頁模板。通常,我們需要繼承框架ActionDispatcher類來定義自己的Dispatcher,比如示例中的ReportActionDispatcher。
在后面我們將有更為詳細的介紹
七、
[color="#000080"]php.MVC系統(tǒng)教程之配置文件
前面我們講解了php.MVC的結構以及流程,接下來,我們將重點介紹以下的核心組件:
- XML配置文件是php.MVC應用程序的“配電盤”,為HTTP請求綁定組件。
- Controller由一些框架類組成,負責為HTTP請求找到正確的Form和Action類以及顯示資源,在
- phpmvc-config.xml文件中定義。
- ActionForm類通常用來處理Web表單驗證。
- Action類可以訪問業(yè)務處理類,能讓我們把精力放在應用程序業(yè)務流上。
- ActionDispatcher類操縱顯示資源的處理。
XML應用程序配置系統(tǒng)
phpmvc-config.xml文件是php.MVC應用程序主要的配置組件,每個php.MVC應用程序都有自己的phpmvc-config.xml文件,通常位于WEB-INF目錄下。一旦這個文件被修改,Controller就會調用XML解析器解析該文件,將XML節(jié)點轉化為配置對象,這些配置對象緩存在phpmvc-config.data文件中,通常它也是放在與phpmvc-config.xml相同的目錄。在后面的請求中,Controller將會調入緩存的phpmvc-config.data文件,保存處理時間。
圖5顯示了一個典型的phpmvc-config.xml文件的節(jié)點和屬性。
![]()
在圖5我們看到了配置文件與應用程序組件是如何聯(lián)系起來的,我們?yōu)閍ction節(jié)點定義了一個path屬性為salesReport,這個標識就是Action的訪問路徑如:
[color="#000080"]http://www.myhost.com/mycompany/Main.php?do=salesReport
.
在action節(jié)點中name屬性為salesReportForm,這就告訴Controller我們要用一個名為salesReportForm的form-bean來處理表單驗證,我們能看到名為salesReportForm的form-bean在action-mappings節(jié)點上面的form-bean內定義了,其中validate屬性為true表示控制器會調用form-bean的validate(...)方法。
在action節(jié)點和與其聯(lián)系的form-bean節(jié)點中,都有type屬性。我們用這個屬性定義form-bean和action各自對應的類。比如action節(jié)點就定義了Action類為SalesReportAction,form-bean節(jié)點的ActionForm類為SalesReportForm。
接下來我們還需要在action節(jié)點中定義forward節(jié)點組來指定框架顯示組件的URI,其中name屬性為forward節(jié)點定義一個標識,path屬性定義了與這個action相關聯(lián)的資源或模板。示例中第一個forward節(jié)點定義為salesReportSuccess,資源路徑為salesReport.tpl,第二個定義為salesReportFailure,資源路徑為salesReportIndex.tpl,在我們的類里我們能用這些forward節(jié)點指定顯示資源的位置。在這個實例中,假如報表成功生成,我們用salesReportSuccess對象和它所定義的salesReport.tpl來處理請求,如果報表生成失敗,我們用salesReportFailure對象和salesReportIndex.tpl來處理,一般是返回到初始頁。
phpmvc-config.xml文件可以用一般的文本編輯器就可以修改,或者用專用XML編輯器。專用XML編輯器可以使用phpmvc-config_1_1.dtd來驗證該配置文件的有效性,DTD文件定義在XML文件可是使用的元素,屬性以及數(shù)值。關于這方面的知識可以查閱XML的相關資料。
下面是示例phpmvc-config.xml文件:
XML Configurations and Bindings: phpmvc-config.xml
八、
php.MVC系列教程之控制器
控制器(Controller)由一些類組成,根據預先定義的配置選項處理用戶請求。一個典型的用戶請求如下:
http://www.myhost.com/mycompany/Main.php?do=salesReport
.
php.MVC 控制器由兩部分組成:前端控制器和控制器。當請求到來時,前端控制器負責安裝應用程序,控制器則根據phpmvc-config.xml的配置屬性處理請求。
圖6顯示了前端控制器的主要任務。
![]()
圖6
用戶請求被Main.php文件接收,這里,將設置一些初始化參數(shù)。前端控制器將執(zhí)行以下任務:
- 定義應用程序路徑:這將指定php.MVC類庫以及Web應用程序的路徑,如下:
$appServerRootDir = 'C:/WWW/phpmvc-base';
$moduleRootDir = 'C:/WWW/mycompany'; - 定義應用程序的ActionDispatcher:我們通常需要擴展框架ActionDispatcher來定義自己的Dispatcher類:
$actionDispatcher = 'MyActionDispatcher'; - 初始化應用程序類路徑:為了將類和資源裝入,前端控制器將導入預先定義的全局路徑以及應用程序路徑。我們可以在/WEB-INF/ModulePaths.php中設置路徑,如下:
$appDirs = array();
...
$appDirs = 'WEB-INF/report_tpl';
$appDirs = 'WEB-INF/report_classes'; - 包含應用程序類:前端控制器將導入它所需要的類文件,我們也可以用/WEB-INF/prepend.php文件來有選擇性地導入一些特殊的應用程序類文件。如下:
include_once './WEB-INF/mytools/MyTools.php'; - 配置應用程序:前端控制器將為應用程序設置配置信息,比如我們先前定義的ActionDispatcher。
- 初始化控制器:前端控制器現(xiàn)在將創(chuàng)建一個應用服務器實例(ActionServer)。
- 導入配置信息:前端控制器現(xiàn)在將導入應用程序配置信息,假如phpmvc-config.xml從最后一次請求后被修改了,phpmvc-config.xml文件將被重新處理并將數(shù)據緩存到/WEB-INF/phpmvc-config.data中。
- 初始化HTTP請求:前端控制器現(xiàn)在將設置HTTP請求并添加請求屬性。
- 調用應用程序控制器:前端控制器現(xiàn)在已經完成了準備工作,將會把處理權交給控制器。
控制器接收從前端控制器傳來的請求,根據配置屬性執(zhí)行一系列操作。
圖7描述了php.MVC控制器的任務。
![]()
圖7
- 處理action路徑:控制器將根據請求路徑識別出關鍵字,選擇一個action映射。比如請求路徑為:
http://www.myhost.com/mycompany/Main.php?do=salesReport
, action路徑就為salesReport。 - 處理現(xiàn)場:根據需要為當前用戶選擇一個Locale
- 處理內容格式:根據需要設置內容格式,默認為text/html。
- 處理不緩存:根據需要設置不緩存頭信息,默認為:
"Pragma", "No-cache"
"Cache-Control", "no-cache"
"Expires", 1 - 處理預處理任務:可以在自定義的ActionServer子類中覆蓋這個方法,執(zhí)行一些指定的預處理任務。
- 處理Action映射:控制器將根據請求識別action映射,根據phpmvc-config.xml的相應節(jié)點生成action映射對象(ActionConfig),比如:。
- 處理角色:檢查能執(zhí)行這個action的所有必須的認證。
- 處理ActionForm:控制器將根據action映射找到相關聯(lián)的ActionForm,form-bean就是由action的name屬性指定,比如:
。 - 處理Populate:根據請求參數(shù)設置ActionForm實例的屬性。
- 驗證ActionForm:根據action的validate屬性值如:,決定是否調用ActionForm的validate()方法。如果validate()返回False(驗證失敗),控制器將用action中input屬性所指定的顯示資源(模板)顯示錯誤,比如:
假如validate()返回True(驗證通過),則將繼續(xù)處理。處理Forward:控制器檢查forward映射的URI是否正常,如果是,繼續(xù)處理。 - 處理Include:控制器檢查include映射的URI是否正常,如果是,繼續(xù)處理。
- 處理Action創(chuàng)建:控制器將創(chuàng)建或獲取Action實例來處理這個請求,這是用action的type屬性來定義的,比如:
- 處理Action執(zhí)行:控制器現(xiàn)在將調用Action類的execute()方法,比如SalesReportAction->execute(...)。在該方法內,我們將調用業(yè)務處理邏輯類。
- 處理Action鏈:控制器將檢查是否還有另外一個Action需要處理,在應用程序配置文件中,我們通過ActionChain能定義一系列Action,為了定義ActionChain,需要為action節(jié)點的forward元素添加一個nextActionPath屬性,比如:
... - forward元素的path屬性是必須項,假如這個特殊的Action沒有輸出,我們可以設置path = ""。
- 處理Action Forward:控制器將轉發(fā)或重定向到指定的資源,一個forward請求在當前處理器中被處理。RequestProcessor只是把控制權交給ActionDispatcher,那里包含了指定的URI模板。比如:
- 重定向請求實際是發(fā)送給客戶端瀏覽器一個標頭響應,然后重定向到一個新的URL。在發(fā)送重定向標頭信息時當前的處理將立即終止。
http://www.myhost.com/MyApp/Main.php?do=newRequest
"
redirect="true"/>
假如沒有其他的Action需要處理,控制器處理結束。
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/12228/showart_62257.html |
|