1、定义拦截器类:
注意登录的action,登录成功在session存入标记(login)
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; /** * 拦截器 * @author 周六刀 */ public class LoginInterceptor extends MethodFilterInterceptor { private static final long serialVersionUID = 1L; @Override protected String doIntercept(ActionInvocation invoker) throws Exception { // TODO Auto-generated method stub // 通过获取session中是否有标记 Object object = ActionContext.getContext().getSession().get("login"); if (null == object) { // 返回登录页面 return "loginfail"; } else { invoker.invoke(); } return null; } }
2、自定义拦截器
注意:如果其他package包需要使用拦截器,则继承该拦截器即可!!
拦截器的顺序一定要对(result-type、action、default-action-ref、default-class-ref、default-interceptor-ref、globel-exception-mappingis、globel-results)
<package name="interceptors" extends="struts-default" namespace="/"> <!-- 自定义个人拦截器 --> <interceptors> <interceptor name="longinInterceptor" class="cn.empsystem.action.LoginInterceptor"></interceptor>
<!--拦截器栈--> <interceptor-stack name="myStack">
<!--默认拦截器--> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="longinInterceptor"> <!-- 过滤非拦截的action --> <param name="excludeMethods">stuLogin,schLogin,empLogin,checkEntRegister</param> </interceptor-ref> <!-- 引入默认拦截器 --> </interceptor-stack> </interceptors> <!-- 为当前所有的action配置默认拦截器 --> <default-interceptor-ref name="myStack"></default-interceptor-ref> <!-- 配置全局结果集 --> <global-results> <!-- 跳转到登录页面 --> <result name="loginfail">/index.jsp</result> </global-results> </package>