您的位置:首页 > 其它

利用注解配置拦截器

2015-01-10 10:12 274 查看
struts2的拦截器是一个十分重要的功能,我们今天就讨论一下利用注解来配置拦截器,上代码。

public class Test extends AbstractInterceptor{

private String name="hello";

@Override

public String intercept(ActionInvocation invocation) throws Exception {

// TODO Auto-generated method stub

ActionContext ctx = invocation.getInvocationContext();

Map session=ctx.getSession();

if(name!=null){

System.out.println("hahahhahah");

return invocation.invoke();

}

else{

System.out.print("wrong!");

}

return null;

}

}

这是拦截器类的代码。

以下是struts2中的代码

<package name="yang" extends="json-default">

<interceptors>

<interceptor name="test" class="util.Interceptor.Test" />

<interceptor-stack name="testStack">

<interceptor-ref name="defaultStack"></interceptor-ref>

<interceptor-ref name="test"></interceptor-ref>

</interceptor-stack>

</interceptors>

</package>

package的名字可以自己取,只需要保持统一即可,如果Action的代码中使用了JSON,最好把extends属性写成“json-default”(后来测试一下,发现写成struts-daefault)也是可以的,这样XML的配置就完成了。

然后是对需要引入的Action配置拦截器

配置方法一:

@Namespace("/QuesDesign")

@ParentPackage("yang") //这里指定ParentPackage必不可少

@InterceptorRefs(@InterceptorRef("testStack"))

public class QuesDesignAction {

@Action1

@Action2

.................

.................

}

这样对Namespace为QuesDesign下的所有Action都引入了拦截器,不需要给Action1,Action2单独配置。、

如果只想对QuesDesignAction类下的Action1配置拦截器的话,可以这样写:

配制方法二:

@Namespace("/QuesDesign")

@ParentPackage("yang") //这里指定ParentPackage必不可少

public class QuesDesignAction {

@Action1(value = "/action1",interceptorRefs={@InterceptorRef("testStack")})

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: