struts2的前身是webwork,後改名為struts2,其與struts1沒任何關係。
請求先經controller層,本質是乙個過濾器filter,其對請求的url進行判斷。若為頁面,進行請求的**,保證請求資料不會丟失;若為action,從配置檔案找到對應action類的完全限定名,並通過反射載入此類,同時生成其實例。
filter將生成的例項注入介面action的例項,並呼叫配置中給出的方法,預設執行execute方法。進入action的方法實際是從controller層轉移到了model層,本質是通過函式呼叫實現的,方法執行結束後,從model層返回到controller層。
controller層根據action返回的結果字串,從配置檔案找到下一步的跳轉路徑。若為頁面,可進行請求的**,也可進行響應的重定向;若為action,則必須進行響應的重定向,保證重新經過controller層。
// struts-x_y.xml
// 專案根據業務劃分多個package,每個package對應乙個配置檔案
// name,主要用作繼承使用
// namespace,決定了包中action的訪問路徑,要根據業務給出自己的namespace,不建議使用預設namespace
// extends,給出當前包繼承的包
"xy" namespace="/xy" extends="login">
// name,action的名字,不同包中action可同名,請求action使用name,建議name為要請求的方法名
// method,請求action時要呼叫的方法名字
"cd" method="cd" class="....xxaction">
// name,對應action返回的結果字串
// type,結果的處理型別
// 預設dispatcher,以jsp/html顯示;velocity,以vm顯示;redirectaction,重定向action
"success" type="velocity">
// 跳轉路徑,建議使用絕對路徑,以/開頭,從專案根目錄開始
// 相對路徑,相對namespace
/web-inf/..
..// struts.xml
// 所有的struts配置檔案在此整合
"x-base" extends="struts-default">
....
"login" extends="x-base">
....
// 合併其它的配置檔案,相對路徑,相對當前xml檔案的路徑
"struts/struts-x_y.xml" />
..public
class xxaction
// 若前端使用jsp,其可通過get方法,顯示來自action的資料
pulbic string getmessage()
public
void
cd()
// 返回框架控制器,再決定進一步走向
return
"success";
}
struts2執行流程
struts 2框架本身大致可以分為3個部分 核心控制器 filterdispatcher 業務控制器 action和使用者實現的企業業務邏輯元件。核心控制器filterdispatcher是struts 2框架的基礎,包含了框架內部的控制流程和處理機制。業務控制器action和業務邏輯元件是需要使...
Struts2流程機制
ssh框架的學習已經有一段時間了,從一開始的略略牴觸,到現在的樂意主動去研究,經歷了很有趣的過程。從開始的先去接受,到逐漸的 一點點的開始理解機制,過程很享受。對struts2的機制的研究已略略有了小的成果,分享給大家。我們只負責 action 和jsp 頁面的編寫,資料的準備及其他工作都是由 st...
struts2 流程分析
在struts2框架中的處理大概分為以下幾個步驟 1 客戶端初始化乙個指向servlet容器 例如tomcat 的請求 2 這個請求經過一系列的過濾器 filter 這些過濾器中有乙個叫做actioncontextcleanup的可選過濾器,這個過濾器對於struts2和其他框架的整合很有幫助,例如...