struts自定义拦截器可以继承AbstractInterceptor,或者实现Interceptor接口
实现接口要重写三个方法。
public class ValidLoginIntercept implements Interceptor{ public void destroy() { } public void init() { } public String intercept(ActionInvocation arg0) throws Exception { return null; } }
下面是这次的练习代码
package com.interceptor; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; //自定义拦截器 public class ValidLoginIntercept extends AbstractInterceptor { @Override public String intercept(ActionInvocation arg0) throws Exception { Map session=arg0.getInvocationContext().getSession(); String username=(String)session.get("sessionusername"); if(username==null) { return Action.INPUT; }else { return arg0.invoke(); } } }
struts.xml的配置
<!-- 拦截器的使用 --> <interceptors> <!-- 定义拦截器 --> <interceptor name="validLoginIntercept" class="com.interceptor.ValidLoginIntercept" ></interceptor> <interceptor-stack name="invalLogin"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="validLoginIntercept"></interceptor-ref> </interceptor-stack> </interceptors> <action name="loginAction2" class="com.struts.LoginAction" method="login"> <!-- 在action中调用拦截器 --> <interceptor-ref name="defaultStack"></interceptor-ref> <result name="success">/taglogin.jsp</result> <result name="failed">/taglogin.jsp</result> <result name="input">/taglogin.jsp</result> </action>