Struts注册自定义全局拦截器
当需要在项目的每次的action请求时,都希望执行指定的检测,可以使用Struts提供的Interceptor实现,定义自定义拦截器,可以继承AbstractInterceptor这个类。如
public class SessionTimeoutInterceptor extends AbstractInterceptor{@Overridepublic String intercept(ActionInvocation actionInvocation) throws Exception {Map session = actionInvocation.getInvocationContext().getSession();if (session.get("SPRING_SECURITY_CONTEXT")==null) {outString("{timeout:true}");return Action.NONE;}else {return actionInvocation.invoke();}}public void outString(String str) { HttpServletResponse response = ServletActionContext.getResponse(); try { response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("text/html;charset=gbk"); PrintWriter out = response.getWriter(); out.write(str); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } }
<interceptors> <interceptor name="timeoutInterceptor" class="com.edward.SessionTimeoutInterceptor"></interceptor> <interceptor-stack name="timeoutStack"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="timeoutInterceptor"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="timeoutStack"/>