自定义拦截器
如何自定義攔截器
????*所有的攔截器都需要實(shí)現(xiàn)Interceptor接口或者繼承Interceptor接口的擴(kuò)展實(shí)現(xiàn)類
????*要重寫init()、Intercept()、destroy()方法
??????? *init()是在struts2框架運(yùn)行時(shí)執(zhí)行,在攔截器的生命周期中之只執(zhí)行一次,可以做必要的內(nèi)容初始化工作
????????*intercept(),是每一次請(qǐng)求就執(zhí)行一次,做相關(guān)處理工作
??????????? *intercept()方法接受一個(gè)ActionInvocation接口的實(shí)例
??????????? *通過這個(gè)接口的實(shí)例,可以獲取一下內(nèi)容:
????????????????//cn.itcast.aop.UserAction@15b5783,動(dòng)作類的對(duì)象
?? ??? ??? ??? ?System.out.println("invocation.getAction() : "+invocation.getAction());
?? ??? ??? ??? ?//cn.itcast.aop.UserAction@15b5783,與invocation.getAction()方法獲取的是同一的對(duì)象
?? ??? ??? ??? ?System.out.println("invocation.getProxy().getAction() : "+invocation.getProxy().getAction());
?? ??? ??? ??? ?//userAction_save,自定義配置文件中的action標(biāo)簽的name屬性的值
?? ??? ??? ??? ?System.out.println("invocation.getProxy().getActionName() : "+invocation.getProxy().getActionName());
?? ??? ??? ??? ?//save,對(duì)應(yīng)動(dòng)作類指定要執(zhí)行的方法名
?? ??? ??? ??? ?System.out.println("invocation.getProxy().getMethod() : "+invocation.getProxy().getMethod());
?? ??? ??? ??? ?//?? ?/aop,自定義配置文件中的package標(biāo)簽的namespace屬性的值
?? ??? ??? ??? ?System.out.println("invocation.getProxy().getNamespace() : "+invocation.getProxy().getNamespace());
????????*destroy()是在攔截器銷毀前執(zhí)行,在攔截器的生命周期中只執(zhí)行一次。
*在struts.xml配置文件中,進(jìn)行注冊(cè)
* 在配置文件中的package標(biāo)簽下,進(jìn)行相關(guān)配置:
?? ??? ?
?? ??? ?<interceptors>
?? ??? ??? ?<!-- 聲明自定義的攔截器 -->
?? ??? ??? ?<interceptor name="expessionInterceptor" class="cn.itcast.aop.ExpessionInterceptor" />
?? ??? ??? ?
?? ??? ??? ?<!-- 聲明自定義攔截器棧 -->
?? ??? ??? ?<interceptor-stack name="expessionStack">
??????????????? <interceptor-ref name="defaultStack"/>
?????????????? ?
??????????????? <!-- 配置使用自定義攔截器 -->
??????????????? <interceptor-ref name="expessionInterceptor"/>
?????????????? ?
??????????? </interceptor-stack>
?? ??? ?</interceptors>
?? ??? ?
?? ??? ?<!-- 配置修改struts2框架運(yùn)行時(shí),默認(rèn)執(zhí)行的是自定義攔截器棧 -->
?? ??? ?<default-interceptor-ref name="expessionStack" />
???
?
總結(jié)
- 上一篇: Xshell连接Ubuntu
- 下一篇: ER-Studio的五种关系说明 .