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

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


可以看到其实拦截器就是和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;
}


}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值