❗ interceptor 이용하여 nav의 게시판종류를 DB에 저장한 데이터 값을 불러와
쉽게 구현&유지보수 하기!
Client <-> Filter <-> Dispatcher Servlet <-> Interceptor <-> Controller
preHandle (전처리) : Dispatcher Servlet -> Controller 사이
postHandle (후처리) : Controller -> Dispatcher Servlet 사이
afterCompletion(뷰 완성 후) : View Resolver -> Dispatcher Servlet 사이
// 전처리
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// application scope 내장 객체 얻어오기
ServletContext application = request.getServletContext();
// application scope에 BOARD_TYPE이 조회되어 세팅이 되지 않았다면
// -> 서버 시작 후 누구도 요청 한적이 없을 경우
if(application.getAttribute("boardTypeList") == null) {
// 조회 서비스 호출
System.out.println("BOARD_TYPE 조회 서비스 호출");
List<Map<String, Object>> boardTypeList = service.selectBoardTypeList();
System.out.println(boardTypeList);
// application scope에 세팅
application.setAttribute("boardTypeList", boardTypeList);
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}