Web MVC 방식 1

휘Bin·2023년 4월 25일
0
post-thumbnail

JSP를 이요한 개발 방식이 유지 보수나 URL 변경 등에서 유연하지 못하다는 단점으로 2000년대 중반 이후 개발은 거의 MVC 형식으로 이루어진다.

MVC구조와 서블릿/JSP

서블릿 코드는 자바 코드를 그대로 이용할 수 잇고, 상속이나 인터페이스 처리도 가능하지만, HTTP로 전달된 메시지를 구성하는 HTML을 처리할 때 매우 비효율적이라는 점이 있다.
반대로 JSP는 HTML 코드를 바로 사용할 수 있지만 자바 코드 재사용 문제나 자바 코드와 HTML 혼재 등의 문제가 있다.
이를 절충하여, 브라우저의 요청은 해당 주소를 처리하는 서블릿에 전달되고, 서블릿 내부에서는 응답에 필요한 재료 데이터들을 준비한다. 이렇게 준비한 데이터들을 JSP로 전달하고, JSP에서는 EL을 이용하여 최종적인 결과 데이터를 생성한다. 생성된 결과 화면은 톰캣을 통해 브라우저로 전송된다.


웹 MVC 구조는 'Model - View - Controller'의 역할을 분리해서 처리하는 구조이다.
데이터는 컨트롤러(Controller)에서, 결과는 뷰(View)에서 처리한다. 이전 포스팅에서는 서블릿이 컨트롤러 역할, JSP가 뷰 역할이었다.

컨트롤러 역할인 서블릿은 JSP에 필요한 데이터를 가공하는 역할을 하는데, 가공을 위해 필요한 데이터를 제공하는 객체를 모델(Model)이라고 한다.

MVC구조 설계

  • MVC 구조 설계 원칙
  1. 브라우저의 호출은 반드시 컨트롤러 역할을 하는 서블릿을 호출하도록 구성
  2. JSP는 브라우저에서 직접 호출하지 않게 하고, Controller를 통해서만 JSP에 접근하도록 구성

개인 프로젝트를 진행하며 깨알 지식(코드 공유는 없습니다ㅜㅜ)
=> github참고 -> hwibinissuccess

  • InputController는 @WebServlet으로 urlPatterns 속성을 지정해 처리해야 하는 경로를 지정
  • InputController의 핵심 코드는 RequestDispatcher를 이용해 forward()를 실행하는 부분
  • RequestDispatcher는 서블릿에 전달된 요청을 다른 쪽으로 전달, 배포 하는 역할
  • WEB-INF 밑에 jsp 파일을 두는 것은 브라우저에서 jsp로 직접 호출이 불가능하다는 것을 의미
  • POST 방식의 처리는 빠르게 다른 페이지를 보도록 브라우저 화면을 이동시키는 것이 좋음
    -> POST 방식으로 처리하고 나서 앞선 방법과 같이 다시 호출될 수 있기 때문에 처리가 끝난 후에 다른 경로로 트는 것이 일반적
    -> HttpServletResponse의 sendRedirect()를 이용
profile
One-step, one-step, steadily growing developer

0개의 댓글