1. Web Application Model
1) 표준화된 소스 구조
2) 모델1, 모델2가 있음
2. 모델1 방식
1) 모든 클라이언트의 요청과 비즈니스 로직 처리를 JSP가 담당하는 구조
2) 기능 구현이 쉽고 편리하지만 유지보수가 어려움
3. 모델2 방식
1) 각 기능을 분리해서 구현
- 클라이언트의 요청 처리 및 흐름 제어 담당 (Controller) => 서블릿
- 응답처리 (화면기능) (View) => JSP
- 비즈니스 로직 처리 (Model) => DAO
2) 각각의 기능을 모듈화해서 개발 => 재사용 높음
3) 유지보수가 쉬움
4) publisher와 개발자 작업 분업화
5) 모델2방식과 관련된 기능, 개념에 대한 이해가 필요
4. MVC 디자인 패턴
1) Model-View-Controller
- Controller
- 서블릿이 컨트롤러 역할
- 클라이언트의 요청을 분석
- Model에서 처리한 결과를 보여주기 위해 JSP를 선택
- Model
- 데이터베이스 연동과 같은 비즈니스 로직을 수행
- DAO, DTO(VO) 클래스
- View
- JSP가 화면 기능을 담당
- Model에서 처리한 결과를 화면에 표시
2) 일반 PC 프로그램 개발에 사용되는 패턴을 웹 애플리케이션에 도입
5. url-pattern
1) 디렉토리 패턴
- 디렉토리 형태로 서버의 해당 컴포넌트(서블릿)를 찾아서 실행하는 구조
- 예) http://localhost/프로젝트명/directory ==> 해당 Servlet
2) 확장자 패턴
- 확장자 형태로 서버의 해당 컴포넌트(서블릿)를 찾아서 실행하는 구조
- 예) http://localhost/프로젝트명/list.do
http://localhost/프로젝트명/update.do ==> do Servlet
http://localhost/프로젝트명/detail.do
- http://localhost/프로젝트명/*.do 로 끝나는 요청을 동일한 doServlet으로
찾아가게 맵핑함.
6. FrontController 패턴
1) FrontController 패턴 적용 전
- 클라이언트의 다양한 요청이 개별적인 서블릿 존재 => 파일도 많이지고 관리 부담.
- => 모든 요청을 처리하는 하나의 서블릿을 만들고, 이에 맞게 분기처리를 하면됨.
2) FrontController 패턴 적용 후
- 클라이언트의 다양한 요청을 한곳에서 집중시켜, 개발 및 유지보수 효율성 증대.
7. Command 패턴
1) 클라이언트로부터 받은 요청들에 대해서, 서블릿이 직접하지 않고
해당 클래스가 처리하도록 함.
2) FrontController 역할을 하는 서블릿이 직접 처리하지 않고,
해당 업무 담당 서블릿으로 분산 시켜서 처리하도록 함.
=> FrontController 패턴 + Command 패턴
8. 회원 관련 추가 기능
1) 커맨드(Command) 패턴
- 브라우저가 URL 패턴을 이용해 Controller에게 수행작업을 request하는 방법
- getPathInfo() 이용해 요청명을 받아와 작업을 수행.
2) http://localhost:8080/Chap20_model2/member/listMembers.do
http://localhost:8080/Chap20_model2/member/editMembers.do
http://localhost:8080/Chap20_model2/member/updateMembers.do
9. 회원 등록
10. 회원 정보 수정
1) 회원 정보 수정창에서 회원 정보를 수정하고
수정하기를 클릭해 /member/modMember.do로 Controller에 요청
2) 컨트롤러는 전송된 수정 정보를 가져온 후 테이블에서 회원 정보를 수정(update)
3) 수정을 마친 후 컨트롤러는 다시 회원 목록창을 표시
'Web > JSP' 카테고리의 다른 글
JSP(25) - Model2 게시판 (0) | 2022.01.29 |
---|---|
JSP(23) - Jquery Ajax (0) | 2022.01.29 |
JSP(21) - JSTL (0) | 2022.01.29 |
JSP(19) - 게시판 만들기(Model1) (0) | 2022.01.29 |
JSP(15) - JSP 내장객체(내장변수) (0) | 2022.01.29 |
댓글