struts 官網位址 :
那麼我們知道strtus只乙個web框架,用它可以來替換我們之前所用過的servlet技術,它幫我們封裝了 請求資料的功能,簡化國際化,簡化檔案上傳,後台資料校驗等等。既然使用它,我們先來看下它執行的過程
乙個請求在struts2框架中的處理分為以下幾個步驟:
1.客戶端發出乙個指向servlet容器的請求(tomcat);
2.這個請求會經過圖中的幾個過濾器,最後會到達filterdispatcher過濾器。
4.如果找到需要呼叫的action,過濾器會把請求的處理交給actionproxy。actionproxy為action的**物件。actionproxy通過configurationmanager詢問框架的配置檔案,找到需要呼叫的action類。
5.actionproxy建立乙個actioninvocation的例項。actioninvocation在actionproxy層之下,它表示了action的執行狀態,或者說它控制的action的執行步驟。它持有action例項和所有的interceptor。
6.actioninvocation例項使用命名模式來呼叫,
actioninvocation初始化時,根據配置,載入action相關的所有interceptor。
通過actioninvocation.invoke方法呼叫action實現時,執行interceptor。在呼叫action的過程前後,涉及到相關***(intercepetor)的呼叫。
7 .一旦action執行完畢,actioninvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果
接下來我們在web專案中進行struts的使用
首先 把 struts所需要的jar包匯入到專案中 [web-inf/lib中]
接下來,新建action類
這裡我們是通過 繼承了 actionsupport類,預設訪問的是該類的 execute方法
返回值是在 後面需要配置的struts.xml中的 result配置中去找對應的返回檢視
接下來編寫 struts.xml,注意 該檔案必須位於 src目錄下,
配置如下
這裡通過package 描述乙個包配置,其中 name 只是乙個包名,繼承於struts-default預設的包配置,在通過action配置 我們需要訪問的action類
action節點中有 name配置,這個name致我們需要訪問的url配置,class是我們編寫的action類的具體路徑[包+類名],result配置則是action類中返回的檢視配置,name值應該與acton類中返回的一致,預設去webroot目錄下找該資源
到此,action配置完畢,我們還需要配置web.xml,上面我們知道struts是基於filter實現,那麼我們在web.xml中 配置對應的過濾器即可
配置如下:
接下來我們把專案部署到tomcat中,然後啟動tomcat,訪問該位址
到此struts配置完畢
那麼接下來我們看看struts執行的過程
啟動專案[tomcat]
1.建立核心過濾器 strutspreparedandexecutefilter物件
2.執行核心過濾器的init方法
讀取了以下配置[依次讀取]
struts-default.xml [struts2 預設配置檔案]
struts-plugin.xml [struts2 外掛程式配置檔案]
struts.xml [自己寫的業務的配置檔案(包含了配置的action)]
類**位於 strtus-core的jar中的 dispatcher類中
如下
訪問資源
3.在框架中查詢對應的action配置,得到class內容,建立action物件
4.讀取action配置的 method內容,執行action物件的對應方法
此檔案位於 struts-core 核心包中
<?xml version="1.0" encoding="utf-8" ?>
input,back,cancel,browse
input,back,cancel,browse
input,back,cancel
input,back,cancel
檢視原始檔,我們可以看到有幾項配置
1.宣告了struts框架執行使用到的一些物件 配置
2.預設包 包名 struts-default(注意:自己寫的package必須繼承這個預設包,只有繼承才能使用其下的功能)
2.1. 此包下配置,此處是跳轉型別
我們常用的有 redirect: 重定向到頁面
redirectaction:重定向到action
dispatcher: **到頁面
chain:**到action
stream:把一般內容輸出到流
(=在此可以演示下不同的跳轉的效果=)
2.2.宣告***(interceptors 32個內建***)
struts預設***:完成struts2核心功能(請求封裝,檔案上傳等)
*** vs 過濾器
過濾器:可過濾任何型別的請求(html/servlet/jsp)和響應
***:是struts2特有的功能,只能過濾action
2.3.宣告***(interceptor-stack name=「basicstack」)
2.4.預設包使用的***
注意:我們使用的包就是繼承 此預設包
2.5 當前預設包下的預設action
Struts標籤使用
1.1.頁面跳轉 可以使用href page action三個屬性實現struts檢視層元件的跳轉,三個屬性的作用及區別為 href使用該網域名稱下的相對路徑,路徑前不需要加 或鏈結至以http開頭其它網域名稱,href index.jsp href http page使用該網域名稱下的絕對路徑,路...
struts標籤使用
標記用於在頁面中建立乙個迴圈,以此來遍歷如陣列 collection map這樣的物件。該標記的功能強大,在struts應用的頁面中經常使用到。1 對陣列進行迴圈遍歷 使用 logic iterate 標記可以用於遍歷陣列,以下是一段示例 string testarray pagecontext.s...
Struts安裝與使用
struts可以執行在任何乙個支援jsp1.2和servlet2.3的web container中struts將所有的請求提交到同乙個中心控制器,org.apache.struts.action.actionservlet 類 web.xml配置 servlet name action servle...