MVC 패턴
- 소프트웨어 디자인 패턴으로 Model, View, Controller를 의미
- Model: DB와 상호작용 등 내부 로직 처리
- view: 화면 출력 관련
- Controller: 사용자로부터 입력을 받으면 이를 구분하여 모델/뷰를 업데이트
Model 1
- view와 controller(요청과 처리)를 JSP에서 모두 구현
- JSP 페이지에 비즈니스 로직을 처리하는 코드와 HTML 코드가 혼재되어 있음
<p><strong><%=boardDao.userName %></strong>님 환영합니다.</p>
model1의 장점
- 구조가 단순해 개발이 쉬워 개발속도가 빠름. 중소형 프로젝트에 적합
model1의 단점
- 프로젝트 규모가 커질수록 유지보수가 어려워짐
- 디자이너와 개발자 간의 협업이 어려워짐
Model 2
- MVC패턴을 웹 개발에 도입한 구조(model2=mvc패턴)
- 사용자의 요청을 JSP가 아닌 servlet이 받음
- servlet이 요청을 받아 이를 view로 보낼것인지 model로 보낼것인지 판단
- view는 보여지는 부분만 담당하고 model에서 실질적인 기능 부분 전담
- 사용자가 view에 직접 접근 할 수 없고 반드시 controller를 통해야함
model2의 장점
- 디자인용과 로직용 자바코드를 분리 시킬 수 있음
- 디자인과 개발자 간 분업 용이
- 코드가 간결하여 유지보수가 쉬우며 확장이 간편함
model2의 단점
- 구조가 복잡함
- 코드가 분리되며 관리해야 할 파일이 많아짐
Servlet
- 클라이언트의 요청을 처리하고 결과를 반환하는 자바클래스
- model2에서 Controller로 이용됨
- 웹어플리케이션서버가 서블릿의 엔진이자 컨테이너의 역할을 함
HttpServlet
- Http요청을 처리하는 웹어플리케이션의 부모클래스
주요메서드
void init()
- HttpServlet객체를 초기화
- Tomcat이 HttpServlet객체를 생성하면, init() 메서드 실행
- init() 메서드를 재정의하면 객체생성 후 실행할 작업을 구현 가능
void destroy()
- HttpServlet객체가 폐기되기 전에 실행되는 메서드
- HttpServlet에서 사용한 컴퓨터의 리소스를 해제하는 코드를 포함
void service(HttpServletRequest request, HttpServletResponse response)
- HTTP 요청이 올때마다 실행되어 이를 분석하여 요청 방식 확인
- 사용자의 요청을 처리하는 코드 직접 작성 가능
void doGet(HttpServletRequest request, HttpServletResponse response)
- GET 방식 HTTP 요청을 처리하는 메서드이며 데이터를 조회
void doPost(HttpServletRequest request, HttpServletResponse response)
- POST 방식 HTTP 요청을 처리하는 메서드이며 사용자가 전달한 데이터를 서버에 저장
void doPut(HttpServletRequest request, HttpServletResponse response)
- PUT 방식 HTTP 요청을 처리하는 메서드이며 서버의 기존 데이터를 수정
void doDelete(HttpServletRequest request, HttpServletResponse response)
- DELETE 방식 HTTP 요청을 처리하는 메서드이며 서버의 기존 데이터를 삭제
Servlet활용
- HttpServlet 클래스를 상속받아 service메서드를 재정의
- HttpServlet 클래스를 요청 URL과 매핑