登录检查拦截器 (ActionInvocation的理解--转载)

1.actionInvocation是什么

ActionInvocation就是Action的调用者。ActionInvocation在Action的执行过程中,负责Interceptor、Action和Result等一系列元素的调度。

理解ActionInvocation你需要对Action的调用过程有一个全面的了解:

http://tech.ddvip.com/2009-01/1232090919106049.html

讲的还是很清楚地!

2.ActionInvocation干什么

Interceptor通过ActionInvocation可以完全的改变Action行为:不让它执行、改变返回值、甚至可以细颗粒的操作Action的方法

查看ActionINvocation 的API,他有getActionProxy(),getResultCode();getActionContext();

ActionProxy在action中用来构建执行环境,ActionProxy提供Action执行的时候一切所需要的配置、参数等等,当然,也要有进行Action调用的入口。


public String intercept(ActionInvocation invocation) throws Exception { 
Map session=invocation.getInvocationContext().getSession();
	    String  actionName=invocation.getProxy().getActionName();
	    String  methodName=invocation.getProxy().getMethod();
}你写过滤器的时候 有这个方法吧,如果没有你继承extends AbstractInterceptor

 
示例:
public String intercept(ActionInvocation invocation) throws Exception{
	ActionContext  ctx = invocation.getInvocationContext();
	//如果请求的action在相应范围内存在,则直接return出intercept方法,调用相应action去执行
	for(String action:whiteList){
		if(ctx.getName().equals(action)){
			return invocation.invoke();
		}
	}
	//如果请求的action不在定义的范围内,则查看是否已经登录,是否有权限做这个action的操作
	HttpSession session = ServletActionContext.getRequest().getSession();
	if(session.getAttribute("SESSION_ADMIN") == null){
		session.setAttribute("sessionErrorMessage","请先登录系统!");
		return "loginError";
	}
	//如果请求的action不在相应范围内,但是已经登录,则直接执行该action请求
	return invocation.invoke();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值