Using HandlerInterceptorAdapter

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
RequestMapping rm = ((HandlerMethod) handler).getMethodAnnotation(
RequestMapping.class);
boolean alreadyLoggedIn = request.getSession()
.getAttribute("user") != null;
boolean loginPageRequested = rm != null &&
rm.value().length > 0 &&
"login".equals(rm.value()[0]);
if (alreadyLoggedIn && loginPageRequested) {
response.sendRedirect(request.getContextPath() + "/app/main-page");
return false;
} else if (!alreadyLoggedIn && !loginPageRequested) {
response.sendRedirect(request.getContextPath() + "/login");
return false;
}
return true;
}
}
Using HandlerInterceptorAdapter

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LoggingInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
request.setAttribute("startTime", System.currentTimeMillis());
HandlerMethod hm = (HandlerMethod) handler;
System.out.printf("From Interceptor, target handler: %s#%s%n",
hm.getBeanType().getSimpleName(),
hm.getMethod().getName());
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {
if (modelAndView != null) {
Long startTime = (Long) request.getAttribute(
"startTime");
modelAndView.addObject(
"footerNote",
String.format("Rendered in %s ms",
System.currentTimeMillis() - startTime));
}
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response,
Object handler,
Exception ex) throws Exception {
long elapsed = System.currentTimeMillis() -
(Long) request.getAttribute("startTime");
System.out.printf("From Interceptor: %s completed in %sms%n",
request.getRequestURI(),
elapsed);
}
}
Original Post