原理:
action則是struts應用中真正幹活的元件,它解決的是做什麼的問題,它通過呼叫需要的業務元件來完成應用的業務,業務元件解決的是如何做的問題,並將執行的結果返回乙個代表所需的描繪響應的jsp(或action)的actionforward物件給actionservlet以將響應呈現給客戶。
需要注意的是action這個類,不應該包含過多的業務邏輯,而應該只是簡單地收集業務方法所需要的資料並傳遞給業務物件。它的主要職責是:校驗前提條件或者宣告;呼叫需要的業務邏輯方法;檢測或處理其他錯誤;路由控制到相關檢視。真正的業務邏輯應該放到下一層的model中處理。
原理示意圖:
工作流程細節:
首先看web.xml中struts的配置
action
org.apache.struts.action.actionservlet
2*.do
struts-config.xml中的配置:
type="wh.loginaction"
name="loginform"
scope="request"
>
細節步驟:
(1)載入配置資訊
web容器(如tomcat)啟動時,通過web.xml的標籤判斷struts的存在,web應用啟動時就通過標籤載入、初始化actionservlet,struts框架的總控制器actionservlet是乙個servlet,它在web.xml中配置成自動啟動的servlet,在啟動時actionservlet會讀取配置檔案struts-config.xml的配置資訊,為struts中不同的模組初始化相應的物件。當actionservlet接收到乙個客戶請求時,將執行如下流程:
(2)取得url
tomcat根據請求的路徑格式判讀是否使用struts框架,本例中在web.xml中配置以do結尾則使用(如login.do以do結尾)。然後tomcat通過標籤得到的路徑,呼叫actionservlet的doget()/dopost()方法,在doget()/dopost()中呼叫process方法。
然後通過process呼叫到requestprocessor類(這是乙個核心控制類)中的processpath()方法來獲取到請求的真正url(例如login.do的到login)。如果不存在就返回請求路徑無效資訊;
如果actionform例項不存在,就建立乙個actionform物件,把客戶提交的表單資料儲存到actionform物件中。
(4)驗證表單
如果actionform的validate()方法返回null或返回乙個不包含actionmessage的actuiberrors物件, 就表示表單驗證成功;
(5)建立action
(6)得到actionforward,進行轉向 ()
方法,execute()方法返回乙個actionforward物件,actionservlet在把客戶請求**給 actionforward物件指向的jsp元件。
伺服器通過actionforward物件進行**工作。actionforward物件指向jsp元件生成動態網頁,返回給客戶。
最後附上具體流程的時序圖。關於struts的幾個重要物件將在下次具體介紹。
Struts工作原理
struts的完整工作流程 1 在web.xml中為actionservlet配置乙個對映路徑,一般都為 do。2 當乙個jsp頁面執行時,如果使用的是html標籤定義的表單,則會根據action指定的路徑與struts.config.xml檔案中的路徑相匹配,如果匹配失敗,則程式報錯。3 在執行乙...
Struts工作原理
上圖 於struts2官方站點,是struts2的整體結構。乙個請求在struts2框架中的處理大概分為以下幾個步驟 客戶端初始化乙個指向servlet容器 例如tomcat 的請求 這個請求經過一系列的過濾器 filter 這些過濾器中有乙個叫做actioncontextcleanup的可選過濾器...
struts工作原理
圖2.3簡單描述了struts的工作原理。它把struts框架處理客戶請求的整個過程細分為八個步驟,下面就來詳細分析這些步驟。1.讀取配置 初始化moduleconfig物件 採用struts框架的web應用,在web應用啟動時就會載入並初始化actionservlet,在actionservlet...