简单实现Struts2的权限拦截器

Action请求类

package action;

public class SystemAction {

	public String execute() {
		return "success";
	}
	
}

自定义拦截器

package interceptors;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class PermissionInterceptor extends AbstractInterceptor {

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		String currentUser = (String)ActionContext.getContext().getSession().get("currentUser");
		if (null != currentUser) {
			// 执行Action中的方法或调用其后的拦截器
			return invocation.invoke();
		}
		return "fail"; // 当前用户为null时跳转至fail视图
	}

}

Struts2核心配置struts.xml





	
		
			
			
		
		
			
			
			
			
			/welcome.jsp
			/fail.jsp
		
	

视图:index.jsp



	
		
		Index
	
	
		

This is page index!

视图:welcome.jsp



	
		
		Welcome
	
	
		

This is page welcome!

视图:login.jsp



	
		
		Login
	
	
		<% session.setAttribute("currentUser", "WanAkiko"); %>
		

提示:登录成功,WanAkiko,欢迎回来!

视图:logout.jsp



	
		
		Logout
	
	
		<% session.removeAttribute("currentUser"); %>
		

提示:当前用户已退出!

视图:fail.jsp



	
		
		Fail
	
	
		

This is page fail!

使用Chrome与IE对自定义拦截器进行测试
在这里插入图片描述
在这里插入图片描述


测试结果:项目启动后即访问index.jsp,此时若未登录,则通过SystemAction访问的是fail.jsp,若进入login.jsp后再次对SystemAction进行请求则访问welcom.jsp,此后若再执行logout.jsp后又执行SystemAction则亦会进入fail.jsp,由此可见我们自定义的权限拦截器确实在生效。

你可能感兴趣的:(Struts2,Struts2,interceptor,AOP,拦截器)