Struts2规定用户自定义拦截器必须实现com.opensymphony.xwork2.interceptor.Interceptor接口
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class PermissionInterceptor implements Interceptor { @Override public void destroy() { } @Override public void init() { } @Override public String intercept(ActionInvocation invocation) throws Exception { Object user=ActionContext.getContext().getSession().get("user"); if(user!=null) return invocation.invoke();//过滤成功则继续执行action中result ActionContext.getContext().put("message", "你没有权限执行该操作!"); return "success";//不成功则执行另一个视图 } }
<package name="employee" namespace="/control/employee" extends="struts-default"> <interceptors> <interceptor name="permission" class="cn.ljf.PermissionInterceptor"></interceptor> <interceptor-stack name="permissionStack"> <!-- 拦截器栈 --> <interceptor-ref name="defaultStack"></interceptor-ref> <!-- 使用了自定义的拦截器,默认的将失效 --> <interceptor-ref name="permission"></interceptor-ref> </interceptor-stack> </interceptors> <global-results> <result name="success">/message.jsp</result> </global-results> <action name="list_*" class="cn.ljf.HelloWorldAction" method="{1}"> <interceptor-ref name="permissionStack"></interceptor-ref><!-- 添加拦截器 --> </action> </package>