Struts2攔截器

自定義攔截器:








從struts2的apps中拷貝相應jar包 然后建struts2項目


加入到buildpath


從它的示例項目中 拷貝 struts.xml文件


其它內容都刪掉,只用留下這個


struts.xml文件必須在src目錄下。

然后在web-inf目錄下的web.xml文件中 對struts2進行配置



新建一個Action繼承ActionSupport,并重寫它的execute方法

然后要對該Action在struts.xml中進行配置:


訪問這個路徑可以訪問到其首頁:


點擊該文字:


success.jsp頁面:




定義一個攔截器:

該攔截器下的intercept方法是自動調用的,進行攔截操作

其中 ?invocation.invoke方法是執行下一個攔截器(如果是最后一個攔截器,就執行目標Action),它會返回一個字符串,也就是結果視圖,也就是Action中的方法返回的字符串。

然后需要在struts.xml文件中對該攔截器進行配置。

首先先要注冊該攔截器:

然后還要引用這個攔截器:

在Action里面引用了這個攔截器







攔截器的順序是按照從上到下的順序進行執行的。

顯示引用攔截器以后,只有手動添加才能夠引用defaultStack



建javaweb項目,然后進行struts(此處省略)配置

禁用動態化的調用,它的開發模式

在struts.xml文件中可以加上這些內容:

因為web-inf目錄下的文件外部無法直接訪問到,所以要在struts.xml文件中進行配置。

在web-inf目錄下的page目錄下的:manager.jsp

通過路徑(項目名)到主頁:


訪問配置的Action,來訪問到manager頁面。

login.jsp頁面:


建LoginAction類,實現SessionAware接口


對username和password字段添加get和set方法。將用戶的信息保存的session里面。獲得一個封裝了servlet的session的集合。通過實現這個接口來拿到(實現它的setSession方法)。


然后寫一個處理登錄請求的方法:


然后在struts.xml中配置這個LoginAction


然后在login.jsp中顯示用戶登錄失敗的信息:



新建一個攔截器來處理:如果用戶已經登錄,就可以通過auth來訪問界面,如果用戶沒有登錄,就不能夠通過auth來訪問界面。


核心:

然后要在struts.xml里面的Action進行攔截,1.先要注冊攔截器

2.然后要為Action引用攔截器


上面已經定義了攔截器棧,所以下下面進行引用的時候只需要引用攔截器棧就行了。



完成了以后 看效果:


如果沒有登錄,直接按照這個路徑去訪問,它就返回到了登錄頁面。

但是如果正確的登錄了以后,會跳轉到:


這個時候Session保存著用戶的登錄信息。

這次再次訪問auth就可以直接進來了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容