Struts(二)工作原理和具體流程

2021-06-05 03:30:18 字數 1594 閱讀 7070

原理:

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...