首页 > 代码库 > struts2 灵魂拦截器
struts2 灵魂拦截器
此文还是小零食..我将会用最通俗易懂的方式 来解释 面向切面编程 AOP
话不多说上图 管理拦截器最好的解释
就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。 这货还有一个说法 就是可插拔因为Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,所以你可以先他插入可以先他拔出 ....正经点脸.所以拦截器就像填充物= = 用的时候放上 不用的时候也可以放上..
然后就是配置咯 先搞个接口 Interceptor 然后实现 里面的方法 第一个第二个 基本上没什么卵用 第三个 才是重点
Init()方法:在服务器起动的时候加载一次,并且只加载一次;
Destroy()方法:当拦截器销毁时执行的方法;
Interceptor()方法:其中里边有一个参数invocation
这是代码
package cn.java.Interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class MyInterceptor implements Interceptor{ @Override public void destroy() { // TODO Auto-generated method stub } @Override public void init() { // TODO Auto-generated method stub } @Override public String intercept(ActionInvocation invocation) throws Exception { Object user = invocation.getInvocationContext().getSession().get("user"); if(user!=null){ //告诉S2接着继续干比如 调用下一个拦截器 或 执行下一个Action //就等于退出了你自己编写的这个intercept invocation.invoke(); }else{ ActionContext.getContext().put("message", "message"); } return "message"; } }
然后是xml文件的配置 可能有点杂乱= =
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true"></constant> <constant name="struts.custom.i18n.resources" value="baseName"></constant> <!-- <constant name="struts.action.extension" value="http://www.mamicode.com/xxx,do,action"></constant> <include file="struts-vv.xml"/> <include file="struts-mm.xml"/> <include file="struts-test.xml"/> --> <package name="kk" namespace="/kk" extends="struts-default"> <!-- 注册一个拦截器 --> <interceptors> <interceptor name="myinterceptor" class="cn.java.Interceptor.MyInterceptor"></interceptor> <interceptor name="myinterceptor1" class="cn.java.Interceptor.MyInterceptor1"></interceptor> <interceptor-stack name="myinter"> <!-- 手动引入拦截器栈 --> <interceptor-ref name="defaultStack" /> <interceptor-ref name="myinterceptor1"></interceptor-ref> </interceptor-stack> <interceptor name="methodinterceptor" class="cn.java.Interceptor.MethodInterceptor"></interceptor> </interceptors> <action name="dt1" class="cn.java.action.DataTypeAction"> <result name="success">/1.jsp</result> <result name="input">/error.jsp</result> </action> <action name="aca" class="cn.java.action.ActionAContextAction"> <result>/info.jsp</result> </action> <action name="ia" class="cn.java.action.InterceptorAction"> <interceptor-ref name="myinterceptor"></interceptor-ref> <result>/main.jsp</result> <result name="message">/message.jsp</result> </action> <action name="kw" class="cn.java.action.KeyWordAction"> <interceptor-ref name="myinter"></interceptor-ref> <result>/main.jsp</result> </action> <action name="mth_*" class="cn.java.action.MyMethodAction" method="{1}"> <interceptor-ref name="methodinterceptor"> <param name="includeMethods">execute,execute2,execute3</param><!--不拦截谁 --> </interceptor-ref> <result>/main.jsp</result> </action> <action name="mva_*" class="cn.java.action.MyValidateAction" method="{1}"> <result name="success">/main.jsp</result> <result name="input">/register1.jsp</result> </action> <action name="sa_*" class="cn.java.action.StudentAction" method="{1}"> <result name="success">/main.jsp</result> <result name="input">/Xmlvalidator.jsp</result> </action> <action name="i18a" class="cn.java.action.I18nAction"> <result name="success">/main.jsp</result> </action> <action name="ognlaction" class="cn.java.action.OGNLAction"> <result name="success">/main.jsp</result> </action> </package> </struts>
不肝了明天继续...
struts2 灵魂拦截器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。