Struts2 自定义拦截器(方法拦截器)
轉自:http://05061107cm.iteye.com/blog/365504
struts2系統自帶了很多攔截器,有時需要我們自己定義,一般有兩種方式:?
一、實現Interceptor接口?
Java代碼??
實現上述方法?
二、繼承AbstractInterceptor類,重寫intercept()方法即可?
? 此方法更可行,其實AbstractInterceptor類也就是實現了Interceptor接口?
Java代碼??
三、方法攔截器:繼承MethodFilterInterceptor類,重寫doIntercept()方法
MethodFilerInterceptor實現方法過濾中用到的兩個參數
| execludeMethods:該參數指定攔截器拒絕攔截的方法列表,多個方法用“,”隔開,指定了這個參數,攔截器不會攔截指定列表中的方法,就是所謂的黑名單 |
| includeMethods:該參數指定攔截器需要攔截的方法列表,如果指定了參數,則指定的Action在執行前會被攔截,即白名單。 |
定義好自定義攔截器后,就要使用自定義攔截器,在struts.xml文檔中?
一、包內定義攔截器?
二、action內使用攔截器?
Xml代碼??
主要:可以看出使用了自定義攔截器的action要配置默認攔截器的引用,因為默認攔截器包含了參數的讀取、session的管理等功能?
一下是例子:
MyMethodInterceptor
public class MyMethodInterceptor extends MethodFilterInterceptor{ protected String doIntercept(ActionInvocation invocation) throws Exception { // TODO Auto-generated method stub System.out.println("進入MyMethodInterceptor方法攔截器!!!!!!!!!!!!!"); Map session = invocation.getInvocationContext().getSession(); String name = (String) session.get("uname"); if (name != null) { return invocation.invoke(); } return "input"; } }
struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> <!-- <constant name="struts.action.extension" value="action,abc"></constant>--> <package abstract="true" name="pk1" namespace="/" extends="struts-default"></package> <package name="pk2" extends="pk1"> <interceptors> <interceptor name="test1" class="org.interceptors.MyTimerInterceptor"/> <interceptor name="method1" class="org.interceptors.MyMethodInterceptor"> <param name="excludeMethods">login</param> </interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="method1"></interceptor-ref> <interceptor-ref name="test1"></interceptor-ref> </interceptor-stack> </interceptors> <!-- <default-interceptor-ref name="myStack"></default-interceptor-ref>--> <action name="login_*_*" class="org.hzy.Actions.LoginAction" method="{1}"> <interceptor-ref name="myStack"></interceptor-ref> <result name="success" type="chain">{2}</result> <result name="input">index.jsp</result> <result name="error">/WEB-INF/Jsp/error.jsp</result> </action> <action name="query_*" class="org.hzy.Actions.QueryAction" method="{1}"> <result>/WEB-INF/Jsp/show.jsp</result> </action> <action name="upload_*" class="org.hzy.Actions.FileUploadAction" method="{1}"> <result>/WEB-INF/Jsp/show.jsp</result> </action> </package> </struts>轉載于:https://www.cnblogs.com/jpa2/archive/2012/05/23/2527433.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Struts2 自定义拦截器(方法拦截器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书笔记—《发现你的行为模式(钻石版)》
- 下一篇: 什么是SID