您的位置:首页 > 编程语言 > Java开发

在struts2如何实现拦截器和配置过程

2012-06-04 15:07 417 查看
//在struts2如何实现拦截器
* 定义需求
* 如果用于已经登陆,可以访问action中的save()方法
* 如果用户没有登陆,则不能访问action中的save方法
模拟:session.setAttriute("user","user")

* 定义拦截器
/*
* struts2中的拦截器是单实例运行
*/
@SuppressWarnings("serial")
public class PerssionInterceptor implements Interceptor {
public PerssionInterceptor(){
System.out.println("PerssionInterceptor 拦截器的构造方法");
}

//初始化方法,在拦截器的声明周期中,该方法执行一次
public void init() {
System.out.println("PerssionInterceptor init");
}

/**
* 在拦截器的声明周期中,该方法执行多次
*   ActionInvocation: 代表一个给定动作的执行状态, 拦截器可以从该类的对象里获得与该动作相关联的 Action 对象和 Result 对象
*     * 由struts2创建,在运行时注入
*/
public String intercept(ActionInvocation invocation) throws Exception {
//请求的UserAction对象
System.out.println("invocation.getAction() "+invocation.getAction());
//请求的UserAction对象的代理对象
System.out.println("invocation.getProxy().getAction() "+invocation.getProxy().getAction());
//访问的action中的方法  svae
System.out.println("invocation.getProxy().getMethod() "+invocation.getProxy().getMethod());
//访问的action所在的命名空间 /aop
System.out.println("invocation.getProxy().getNamespace() "+invocation.getProxy().getNamespace());

//获取session
Map sessionMap=invocation.getInvocationContext().getSession();

//从session中获取user
Object user=sessionMap.get("user");

//如果user==null
if(user==null){
//转到没有权限的页面
return "error";
}

//真正调用action的save方法
String resultValue=invocation.invoke();
System.out.println("resultValue   "+resultValue);
return resultValue;
}

//销毁方法,在拦截器的声明周期中,该方法执行一次
public void destroy() {
System.out.println("PerssionInterceptor destroy");
}
}

* 让拦截器运行
* 在struts_aop.xml文件配置拦截器
<interceptors>
<!-- 声明自定义的拦截器 -->
<interceptor name="perssionInterceptor" class="cn.itcast.aop.PerssionInterceptor" />

<!-- 定义新的拦截器栈 -->
<interceptor-stack name="perssionStack">
<!-- 引用默认栈-->
<interceptor-ref name="defaultStack"/>
<!-- 增加自定义的拦截器 -->
<interceptor-ref name="perssionInterceptor"/>
</interceptor-stack>
</interceptors>

<!--struts2执行时,真正要执行的拦截器栈-->
<default-interceptor-ref name="perssionStack"/>

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