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>