自定義攔截器:
從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就可以直接進來了。