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>