Strut2拦截器详细配置

1.声明一个类继承拦截器接口,或者实现拦截器接口 如下:

extends AbstractInterceptor

extends MethodFilterInterceptor

implements Interceptor

MethodFilterInterceptor    extends      AbstractInterceptor   implements     Interceptor

1声明拦截器-1    extends MethodFilterInterceptor

package com.baizhi.zcn.interceptor;

import org.apache.struts2.ServletActionContext;
import com.baizhi.zcn.entity.Admin;
import com.baizhi.zcn.entity.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.interceptor.Interceptor;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class TestInterceptor extends MethodFilterInterceptor{
	@Override
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		Admin admin = (Admin) ServletActionContext.getRequest().getSession().getAttribute("admin");
		System.out.println("=====拦截器======admin:"+admin);
		if(admin==null){
			//用户不存在,没有登录,跳转到登录页面
			return "adminLogin";
		}else{
			//判断是否激活,如果没激活到激活页面
			//激活,放行
			invocation.invoke();
		}
		return null;
	}
}

1声明拦截器-2     extends AbstractInterceptor

package com.baizhi.zcn.interceptor;

import org.apache.struts2.ServletActionContext;

import com.baizhi.zcn.entity.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.interceptor.Interceptor;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class UserInterceptor extends AbstractInterceptor{

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		User user = (User) ServletActionContext.getRequest().getSession().getAttribute("userLogin");
		System.out.println("=====拦截器======user:"+user);
		if(user==null){
			//用户不存在,没有登录,跳转到登录页面
			return "userLogin";
		}else{
			//判断是否激活,如果没激活到激活页面
			//激活,放行
			invocation.invoke();
		}
		return null;
	}
}

2.配置拦截器-1

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "struts-2.3.dtd" >
<struts>
	<package name="address" extends="struts-default" namespace="/address">	
		<!-- 配置拦截器 -->
		<interceptors>
		    <!-- 配置拦截器 name=拦截器起的名称,可以随便写;class=配置拦截器类的全限定名 -->
		    <!--具体的name和class必须写,指定这个拦截器的位置和名称方便下面调用-->
			<interceptor name="userInterceptor" class="com.baizhi.zcn.interceptor.UserInterceptor"></interceptor>
			<!-- 配置拦截器栈     name=拦截器栈名,可以随便起-->
			<interceptor-stack name="myUserStack">
				<!-- 这个是系统默认的Stack,如果你只调用上面自己写的Stack,则会只执行login拦截器的方法,很多地方会发生错误接收不到值-->
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<!-- 定义拦截器栈包含userInterceptor拦截器 -->
				<interceptor-ref name="userInterceptor"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		
		<!-- 全局配置错误页面跳转 -->
	   	<!--这个是公共类,所有的action都会走这个results -->
		<global-results> 
			<!-- 当返回LoginError视图名时,转入/login.jsp页面 -->
			<result name="LoginError">/logi.jsp</result>
		</global-results>
				
		<action name="*" class="com.baizhi.zcn.action.AddressAction" method="{1}">
			<!-- 使用拦截器 name=拦截器栈名 -->
			<interceptor-ref name="myUserStack"/>
			<!-- 前台: 查询 -->
			<result name="queryAll" >/queryAll.jsp</result>
		</action>
	</package>
</struts> 

2.配置拦截器-1

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "struts-2.3.dtd" >
<struts>
	<package name="address" extends="struts-default" namespace="/address">
		
		<!-- 配置拦截器 -->
		<interceptors>
		    <!-- 配置拦截器 name=拦截器起的名称,可以随便写;class=配置拦截器类的全限定名 -->
		    <!--具体的name和class必须写,指定这个拦截器的位置和名称方便下面调用-->
			<interceptor name="userInterceptor" class="com.baizhi.zcn.interceptor.UserInterceptor">
				<!-- 指定需要拦截的方法可以用,拼接(queryAll,queryById)-->
				<!-- name= excludeMethods(排除哪些方法) includeMethods(包含哪些方法) -->
				<param name="includeMethods" >queryAll,queryById</param>
			</interceptor>
			<!-- 配置拦截器栈     name=拦截器栈名,可以随便起-->
			<interceptor-stack name="myUserStack">
				<!-- 这个是系统默认的Stack,如果你只调用上面自己写的Stack,则会只执行login拦截器的方法,很多地方会发生错误接收不到值-->
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<!-- 定义拦截器栈包含userInterceptor拦截器 -->
				<interceptor-ref name="userInterceptor"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		
		<!-- 全局配置错误页面跳转 -->
	   	<!--这个是公共类,所有的action都会走这个results -->
		<global-results> 
			<!-- 当返回userLogin视图名时,转入/login.jsp页面 -->
			<result name="userLogin">/front/user/login_form.jsp</result>
		</global-results>
				
		<action name="*" class="com.baizhi.zcn.action.AddressAction" method="{1}">
			<!-- 使用拦截器 name=拦截器栈名 -->
			<interceptor-ref name="myUserStack"/>
			<!-- 前台: 查询 -->
			<result name="queryAll" >/queryAll.jsp</result>
			<!-- 前台: 查询 -->
			<result name="queryById" >/queryById.jsp</result>
		</action>
	</package>
</struts> 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值