Struts中的攔截器——登入驗證例項
阿新 • • 發佈:2019-01-25
前段時間在學習SSH網上商城的時候在接近尾聲的地方視訊中對登入的驗證使用了攔截器,看視訊中的實現並沒有特別的複雜感覺攔截器很好用,現在跟著10期的師哥們做專案對登入的驗證也使用了攔截器,所以就進行了如下簡單的學習瞭解,從它是什麼開始學習。
攔截器
對呼叫Action起作用,提供一種機制可以使開發者在一個action執行的前後定義執行的程式碼,也可以是在action執行前阻止其執行。比較長用的攔截器實現的是校驗、登入許可權的驗證等。攔截器原理
Struts2攔截器的實現原理相對簡單,當請求struts2的action時,Struts 2會查詢配置檔案,並根據其配置例項化相對的攔截器物件,然後串成一個列表,最後一個一個地呼叫列表中的攔截器。Struts2規定使用者自定義攔截器必須實現com.opensymphony.xwork2.interceptor.Interceptor介面。具體使用的過程
1、寫好一個攔截器在這裡我們繼承了Struts提供的抽象類MethodFilterInterceptor,重寫方法在其中寫入我們自己要執行的邏輯如下
<span style="font-size:18px;">public class PrivilegeInterceptor extends MethodFilterInterceptor{ @Override //執行攔截的方法 protected String doIntercept(ActionInvocation actionInvocation) throws Exception { // 首先要從session中拿使用者的資訊 AdminUser existAdminUser=(AdminUser)ServletActionContext.getRequest().getSession().getAttribute("existAdminUser"); //判斷是否拿到了資訊 if(existAdminUser==null){ //沒有登入 ActionSupport actionSupport=(ActionSupport) actionInvocation.getAction();//獲得正在執行的action actionSupport.addActionError("親,您還沒有登入!沒有許可權訪問!"); return "loginFail"; }else { //登入了 return actionInvocation.invoke();//直接放行 } } }</span>
2、在Struts.xml中進行配置
程式啟動後讀取配置檔案然後例項化相應的攔截器類PrivilegeInterceptor。
3、在Action處進行配置
再要執行攔截的action後進行配置就可以使用了。
小結
目前對攔截器的學習知識停留在使用的層面上而對器原理的理解也只是在程式的配置檔案中,使用的感覺比較簡單。自己在查閱相關的資料時瞭解到攔截器不僅僅是這樣簡單的分類和使用的方法,它有很多的型別功能也不相同。也有用它和過濾器進行比較的,有個簡單的了有待深入。