public class AntiRefreshFilter implements Filter {
private static String KEY = “anti_refresh_lock”;
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession(false);
if (session != null) {
Boolean locking = (Boolean) session.getAttribute(KEY);
if (locking != null && locking) {
return;
}
}
try {
request.getSession(true).setAttribute(KEY, Boolean.TRUE);
chain.doFilter(req, res);
} finally {
HttpSession session2 = request.getSession(false);
if (session2 != null) {
session2.removeAttribute(KEY);
}
}
}
public void init(FilterConfig arg0) throws ServletException {}
public void destroy() {}
}