struts2嘗試提供平台給開發人員快速的開發一般的任務。
struts2是MVC架構的實現,在struts2中model代碼struts2中的action,view代碼struts2中的result,
controller代碼struts2中的FilterDispatcher,在struts2中,controller的工作就是將使用者發送來的請求
與相應的action進行映射,在model中包含DAO,BO等在struts2中model是通過action組件來實現的,View
是用來描述的通過用JSP,Velocity模板,Freemaker或者其他的模板技術。
struts2的工作流程:首先通過配置web.xml之後讓使用者的請求可以進行struts2這個架構中,controller接
受使用者的請求之後確定那個struts2中的action會被調用,struts2架構建立action的執行個體,之後讓action
的執行個體與新的ActionInvocation執行個體進行關聯,struts2調用action之前會先調用一系列的攔截器(攔截器
在struts.xml中進行定義,攔截器可以在做action之前做點什麼事情的)之後action做完之後,攔截器還
會被執行(還是在struts.xml中進行定義的,此時的攔截器可以在action之後做點什麼事情),struts2框
架通過調用ActionInvocations類中的invoke方法來開始執行action,每當invoke方法被調用,都會有攔截
器被調用,攔截器是存放到一個棧中的,之後通過調用攔截器的intercept方法進行調用,intercept方法
中調用invoke方法,ActionInvocation最後才調用action,之後返回相應的result,之後根據相應的
result進行展示。一些攔截器會在action之前執行和有些會在action之後會被執行,攔截器的執行會按照
,在棧中的的定義順序來繼續執行的,在struts2中重要的特色就是OGNL和值棧,OGNL是強大的運算式語言
,常常用於操作資料在值棧中,OGNL很方便的進行資料轉送和類型轉換,並且OGNL提供簡單的文法去引用
java對象。
在struts2的action在值棧中也是ActionContext的一部分,ActionContext是一個全域的儲存區用來儲存用
戶的請求的資料,當一個請求來的時候,parames攔截器協助轉移請求資料到值棧中,現在OGNL轉換表單數
據成為相應的java類型OGNL是通過內建的類型轉換來完成的,之後將java類型轉換在值棧中轉換成為簡單
是Stirng類型的,之後通過HTML進行輸出,Action是Contex是安全執行緒的,每個值儲存在ActionContext是
唯一的線程,所以很安全。