팀 프로젝트가 정해지고 완료까지의 과정을 담은 여정을 기록해보도록 한다.
팀원 역할을 분배하면서 나는 게시판 구현을 담당하게 되었다. 게시판을 구현하기 위해 필요한 와이어프레임을 miro 사이트를 통해 구현하였다.
순번대로 내가 게시판을 구현했던 과정을 기록하겠다.
게시판을 작성하기 위해서 먼저 나는 전후처리기를 이용하여 게시판으로 이동하기 위한 코드를 데이터베이스에 등록하였다.
dbeaver를 사용하여 dbeaver를 aws와 연결하는 과정은 이미 시행하였다.
연동한 dbeaver에서 데이터를 가져오는 전후처리기 과정은 이러하다.
<interceptors>
<!--interceptor: 요청이 Dispatcher Servlet에서 Controller에 도달하기 전 또는 후에 요청/ 응답 객체(req, resp)를 가로채서 사용할 수 있는 객체 -->
<interceptor>
<!-- /** 은 모든 요청, /*은 /member이나 한차례..? -->
<mapping path="/**"/>
<!-- 가로챌 요청의 패턴을 지정 -->
<beans:bean id = "boardTypeInterceptor" class ="fp.art.stroke.common.interceptor.BoardTypeInterceptor"/>
</interceptor>
</interceptors>
이렇게 interceptor를 등록하면 인터셉터를 통해서 후처리기를 이용해 나는 보드 타입을 가져왔다. 이때 우리 페이지의 index.jsp에 forward를 써서 main.jsp로 향하게 controller를 설정해둔 상태다.
즉 main.jsp로 향하게 controller가 작동하면 후처리기가 사용된다.
public class BoardTypeInterceptor implements HandlerInterceptor{
@Autowired
private BoardService boardService;
private Logger logger = LoggerFactory.getLogger(BoardTypeInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
logger.info("전처리 수행");
return HandlerInterceptor.super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
logger.info("후처리 수행");
//application scope에 "boardTypeList"가 없을 경우
//이를 조회하는 Service 호출 후 결과를 세팅
//application scope 객체 얻어오기..
ServletContext application = request.getServletContext();
if(application.getAttribute("boardTypeList") == null ) {
List<BoardType> boardTypeList = boardService.selectBoardType();
application.setAttribute("boardTypeList", boardTypeList);
}
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
logger.info("VIEW 처리 완료 후 수행");
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
이렇게 실행하면 boardService @Service로 설정해둔 값을 읽어오게 된다.
가져오게 되면 결과적으로 boardType 두개를 가져와 우리 페이지에 뿌려주게 되는데 결과는 이러하다.