當前位置:
首頁 > 最新 > Struts2框架獲取Servlet API之注入方式詳解

Struts2框架獲取Servlet API之注入方式詳解

在struts-default.xml的配置文件中

有一個 servletConfig攔截器

查看 servletConfig的對應的類的 ServletConfigInterceptor源碼

首先獲取action類,接著判斷這個action實現了哪個介面.

例如實現了ServletRequestAware介面,那麼Struts2框架就幫你把request對象注入到當前的action中.

測試代碼如下:

建立一個login.jsp頁面. 裡面有一個簡單的註冊姓名和密碼的輸入框

name屬性分別為,

新建一個LoginAction的Java類實現ServletRequestAware介面,重寫了setServletRequest方法

把request對象,傳遞給了當前的action類

在LoginAction類中,先執行的是setServletRequest()方法,是由StrutsPrepareAndExecuteFilter這個Filter過濾器調用setServletRequest方法, 那麼LoginAction這個類就得到了request對象.再執行login()方法獲取參數.

這也涉及到了一個知識點:

在一個類中,裡面如果有很多的方法,這些方法不是從上到下依次執行的,主要是看誰先被調用. 方法裡面的代碼是從上到下執行的.

由於是先載入struts-default.xml配置文件,setServletRequest(HttpServletRequest request)方法先被調用.

後載入struts.xml配置文件,配置了login()方法,那麼就會被調用和執行.

Struts2框架配置文件的執行順序

default.properties 該配置文件聲明了struts2框架的常量

Struts-default.xml struts2框架的核心功能都是在該配置文件中配置的。

struts.xml 在src的目錄下,代表用戶自己配置的配置文件

最後載入web.xml的配置文件

注意:後載入的配置文件會覆蓋掉之前載入的配置文件(在這些配置文件中可以配置常量)

注入的方式執行的流程:

login.jsp中填寫了姓名和密碼的參數,當點擊註冊按鈕,會向伺服器發送請求,StrutsPrepareAndExecuteFilter就會進行攔截,會載入一開始提到的struts-default.xml中的interceptor攔截器.其中就有servletConfig

在ServletConfigInterceptor類中,其中一段代碼如下

其中:

是獲取當前的action類

是通過多態的方式判斷action繼承了哪個類

框架底層獲取了request 對象

執行了setServletRequest(request)方法.

LoginAction重寫了setServletRequest(request)方法,通過 那麼就拿到了request對象.

總結:

當servletConfig對應的類執行時,會得到當前訪問的Action對象

在通過判斷是否實現指定的介面來將需要的servlet api對象注入到action類當中


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 稻香的超人不會飛 的精彩文章:

TAG:稻香的超人不會飛 |