struts2拦截器的配置
拦截器(Interceptor) 是动态拦截Action调用的对象,类似于Servlet中的过滤器。在执行Action的业务逻辑处理方法)(execute())之前,Struts2会首先执行struts.xml中引用的拦截器。
struts.xml 拦截器的配置
<struts>
<package>
<interceptors>
<interceptor name="拦截器名称1" class="拦截器的全类名1" />
<interceptor name="拦截器名称2" class="拦截器的全类名2" />
</interceptors>
</package>
<action name="action名1" class="action全类名">
<result name="success">/login.jsp</result>
<result name="input">/error.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="拦截器名1" />
<interceptor-ref name="拦截器名2 " />
</action>
</struts>
注意默认拦截器一定要在自定义拦截器之上,不然会默认拦截器会把自定义拦截器覆盖。
拦截器类对用户的登录状态的验证
package interceptor;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import java.util.Map;
public class LoginInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation ai)throws Exception{
Map session=ai.getInvocationContext().getSession();
String username=(String)session.get("username");
if(username!=null&&username.length()>0){
return ai.invoke();
}else{
ActionContext ac=ai.getInvocationContext();
ac.put("popedom","你还没有登录");
return Action.LOGIN;
}
}
}