`
szlxh002
  • 浏览: 33707 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2 拦截器interceptor

 
阅读更多

1.自定义拦截器

@SuppressWarnings("serial")
public class SessionInterceptor extends AbstractInterceptor {
	private static final Object LOGIN_KEY = "admin";
	public static final String LOGIN_PAGE = "loginPage";

	@Override
	public String intercept(ActionInvocation actionInvocation) throws Exception {
		Map session = actionInvocation.getInvocationContext().getSession();
		Admin admin = (Admin) session.get(LOGIN_KEY);
		if (admin != null) {
			return actionInvocation.invoke();
		} else {
			return LOGIN_PAGE;
		}
	}
}

 2.配置拦截器

 

    有三种配置方法:

方法1. 普通配置法

<struts> 
    <package name="struts2" extends="struts-default"> 
        <interceptors> 
            <interceptor name="myInterceptor" class="SessionInterceptor"></interceptor> 
        </interceptors> 

        <action name="register" class="edu.hust.action.RegisterAction"> 
            <result name="input">/register.jsp</result> 
            <result>/result.jsp</result> 
             
            <!-- 在自定义interceptor并将其ref时, 系统会覆盖掉默认的interceptor-stack(defaultStack), 为了保证系统默认的defaultStack不受印象, 我们需要显式的将其引入 --> 
            <!-- 注意两个interceptor-ref的顺序, 顺序不同, 执行效果也不同: 先配置的先执行/后配置的先退出(先进后出) --> 
            <interceptor-ref name="defaultStack"></interceptor-ref> 
            <interceptor-ref name="myInterceptor"></interceptor-ref> 
        </action> 
    </package> 
</struts>

 

 方法2. 配置拦截器栈

<struts> 
    <package name="struts2" extends="struts-default"> 
         
        <interceptors> 
            <interceptor name="myInterceptor" class="SessionInterceptor"></interceptor> 
         
            <interceptor-stack name="myInterceptorStack"> 
                <interceptor-ref name="myInterceptor"></interceptor-ref> 
                <interceptor-ref name="defaultStack"></interceptor-ref> 
            </interceptor-stack> 
        </interceptors> 
         
        <action name="register" class="edu.hust.action.RegisterAction"> 
            <result name="input">/register.jsp</result> 
            <result>/result.jsp</result> 
             
            <interceptor-ref name="myInterceptorStack"></interceptor-ref> 
        </action> 
    </package> 
</struts>

 

方法3. 修改默认拦截器,将自定义的拦截器栈定义为struts2的默认拦截器

<struts> 
    <package name="struts2" extends="struts-default"> 
         
        <interceptors> 
            <interceptor name="myInterceptor" class="SessionInterceptor"></interceptor> 
            <interceptor-stack name="myInterceptorStack"> 
                <interceptor-ref name="myInterceptor"></interceptor-ref> 
                <interceptor-ref name="defaultStack"></interceptor-ref> 
            </interceptor-stack> 
        </interceptors> 

        <!-- 此默认interceptor是针对所有action的 --> 
        <!-- 如果某个action中引入了interceptor, 则在这个action中此默认interceptor就会失效 --> 
        <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref> 
         
        <action name="register" class="edu.hust.action.RegisterAction"> 
            <result name="input">/register.jsp</result> 
            <result>/result.jsp</result> 
        </action> 
         
    </package> 
</struts>

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics