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

struts中拦截器拦截Action中的execute方法后的具体拦截流程

2016-09-13 16:51 656 查看
我开始对拦截器的整个拦截流程很难理解,网上都是解释拦截器里面套拦截器,但是没有将讲拦截器的具体流程,下面通过一个图来讲解一下具体流程,如下图:



可以看到其实拦截器就是和servlet中的filter的类似的,都是在请求方法Action之前先验证一下,这就是拦截器的一种典型的应用,验证用户是否登陆,我们通常会对所有的请求都添加拦截器(方法:修改默认的拦截器,自定义自己的myDefaultInterceptorStack),将所有的请求都通过拦截器,但是请注意:本身是登陆的页面不需要经过拦截器

具体看如下代码:

package com.shengsiyuan.interceptor;

import java.util.Map;

import com.opensymphony.xwork2.Action;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

import com.shengsiyuan.struts2.LoginAction;

public class LoginInterceptor extends AbstractInterceptor {

@Override
public String intercept(ActionInvocation invocation) throws Exception {
if(LoginAction.class==invocation.getAction().getClass()){//要将本身就是登录界面的action排除在interceptor之外,不然无论如何也是转向错误界面Aciton.LOGIN到error.jsp
return invocation.invoke();
}
// TODO Auto-generated method stub
Map map=
invocation.getInvocationContext().getSession();

if(null==map.get("userinfo")){

return Action.LOGIN;//除了登录的action,其他action都要加上拦截器

}

return null;
}

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