* 이 포스팅은 부산대학교 2023 백엔드 미니 부트캠프 2주차 학습 내용을 정리한 글입니다.
모델 1은 뷰와 로직을 모두 JSP 페이지 하나에서 처리하는 구조이다.
예를 들어 메인 페이지, 회원 페이지, 게시판 페이지가 있는 웹 어플리케이션을 가정하자. 모델 1 방식은 클라이언트가 각 페이지 JSP 파일로 직접 요청을 보내는 구조이다. 이런 구조의 웹 어플리케이션은 공통처리가 불가능하다.
정리하면 다음 특징을 가진다
위 그림과 같이 중복되는 로직을 일차적으로 처리하기 위해서 프론트 컨트롤러를 사용한다. 하지만 프론트 컨트롤러만 있는 구조는 아직 불완전하다.
@WebServlet("*.do")
public class FrontController extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 공통 로직 처리
}
다이렉트 JSP 호출을 막기 위해서 WEB-INF 폴더에 JSP 파일을 숨긴다.
또 View 재요청시 request 데이터 손실을 방지하기 위해 RequestDispatcher를 사용한다.
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
...
req.getRequestDispatcher("/WEB-INF/views/해당_JSP.jsp").forward(req, resp);
}