struts2杀器---Interceptor拦截器

 
 

    struts2是目前java开发中流行的控制层框架,取代了原先的servlet。struts2的惊天创举就是采用了一系列拦截器,对前台请求进行一系列处理, 这一创举开启了面向切面编程的时代,也体现了一种成熟的架构思想。

    废话少说,show my code,首先在web层定义一个权限拦截器,如下:

public class PrivilegeInterceptor extends MethodFilterInterceptor{

	@Override
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		//获得session,获得登陆标识
		User user = (User) ActionContext.getContext().getSession().get("user");
		//判断标识是否存在
		if(user != null){
			//已登陆
			return invocation.invoke();//放行
		}else{
			//不存在
			return "toLogin";
		}
		
	}
	
}

在web.xml中配置struts2拦截器

<package name="crm" namespace="/" extends="struts-default">
	<!-- 拦截器配置 -->
	<interceptors>
		<!-- 注册自定义拦截器 -->
		<interceptor name="myInter" class="com.iteason.web.PrivilegeInterceptor"></interceptor>
		
		<!-- 注册自定义拦截器栈 -->
		<interceptor-stack name="myStack">
			<!-- 引入自定义拦截器 -->
			<interceptor-ref name="myInter">
				<!-- 配置不拦截的方法 -->
				<param name="excludeMethods">login.regist</param>
			</interceptor-ref>
			
			<!-- 引入默认的拦截器栈 -->
			<interceptor-ref name="defaultStack"></interceptor-ref>
		</interceptor-stack>
	</interceptors>
	
	<!-- 指定默认自定义的拦截器栈为默认拦截器栈 -->
	<default-interceptor-ref name="myStack"></default-interceptor-ref>
	
	//lots of actions
</package>

这样就可以用struts2实现权限管理了。

配置顺序:

--》配置拦截器   

    |--》注册自定义拦截器

    |--》注册自定义拦截器栈

            |--》引入自定义拦截器并配置拦截方法

            |--》引入struts2的默认拦截器栈

--》配置拦截器

--》指定默认拦截器栈


注意

1、自定义的拦截器必须实现的是MethodFilterInterceptor类

2、自定义拦截器栈必须引入struts的默认拦截器

3、这些配置都在某一package下


猜你喜欢

转载自blog.csdn.net/pbrlovejava/article/details/80643316