[JSP & Servlet 배경지식] 6. JSP – concept 2014-10-24

> JSP(Java Server Page)는 Servlet의 확장된 기술로 브라우저에 표현하기 위한 HTML코드에 JAVA 코드를 혼용하여 사용할 수 있게 한다. 이로써 디자인과 로직 개발을 분업화시켜 효율적인 코드를 생산해 낼 수 있게한다.

>>> JSP가 동작하는 구조
jspContainer
① 클라이언트가 브라우저를 통해 서버에 HTTP 프로토콜로 요청한다.
② 서버는 컨테이너에게 처리를 요청하고 컨테이너는 해당 파일을 찾는다.
③ 찾은 파일을 서블릿으로 변환한다. 만약 이미 변환 되어있는 파일이 있다면 그 파일을 바로 실행⑤한다.
④ 서블릿 파일을 실행가능한 class파일로 컴파일 한다.
⑤ 컴파일된 class파일을 메모리에 적재하고 실행한 결과를 웹서버에 넘겨준다.
⑥ 웹서버는 브라우저가 인식할수 있는 정적페이지를 구성하여 클라이언트에게 응답한다.
>>> JSP기술을 활용한 개발 구조화 와 업무 분업화

MVC-model

* 분업화를 위하여 MVC(Model-View-Controller)패턴 이라는 개념이 생겨났고 효율적인 코드의 생산이 가능해졌다.
* MVC - Model 1, Model 2의 2가지 모델이 존재하며 장단점을 고려하여 시스템을 구성해야 한다.
* Model 1
-- JSP, Servelt, Bean 등으로 구성되는 형태로 JSP에는 프리젠테이션 레이어 & 비즈니스 레이어를 포함하고 업무부분을 JavaBean이나 Servlet에서 구현하기도 한다.
-- Model - View - Controller로 구분하기 모호하긴하지만 궂이 따지자면 그림과 같이 JSP에서는 주로 View와 Controller의 역할을 JavaBean / Servlet에서는 주로 Model의 역할을 하지만 Controller의 역할을 하기도 한다.
-- 장점
---> 페이지 흐름이 단순해 개발팀원의 수준이 높지 않아도되 중소형 프로젝트에 적합하다.
-- 단점
---> 웹어플리케이션이 복잡해 질수록 유지 보수가 힘들어진다.
---> 완벽히 분리되지 않아 디자이너와 개발자가 원활히 의사소통 되지 않으면 충돌이 발생한다.
* Model 2
-- 사용자 Request(①)에 대하여 Controller는 Model에게 데이터 조회, 비즈니스 로직의 처리를 요청(②)하고 Model로 부터 정보를 받아 View에게 전달(③)한다. 최종적으로 View는 정적데이터를 구성하여 사용자에게 Response(⑥)한다.
-- 장점
---> 효과적으로 분리되어 구성된다면 개발자와 디자이너의 작업이 분리되어 역할과 책임 구분이 명확해진다.
---> 로직과 디자인 개발의 분리로 인해 웹어플리케이션이 구조화되어 유지보수 및 확장이 용이해진다.
-- 단점
---> 구조화를 위해 개발의 복잡도가 증가함에 따라 개발기간도 증가한다.
---> 개발팀원이 MVC구조에 대한 높은 수준의 이해가 요구되 고급개발자가 필요하다.

[JSP & Servlet 배경지식] 5. Servlet – Life Cycle 2014-10-23

> 서블릿 객체가 생성되어 서비스하고 소멸되는 과정은 다음과 같다.

servlet_lifecycle

① 사용자로부터 특정 페이지에 대한 요청이 들어오면 컨테이너로 요청 정보가 전해진다
② 컨테이너는 배포서술자(DD:Deployment Descriptor)의 서블릿 맵핑 정보를 참조하여 해당 서블릿을 호출한다.
③ 호출된 MyServlet이 로딩 > 생성 된다.
④ 서블릿이 초기화 된다.(최초 요청시에만 실행)
⑤ 요청에 대한 내용을 처리하고 응답해준다.
⑥ 서블릿이 소멸된다.(서비스 종료시 실행)

[JAVA 개발환경설정] 4. Dynamic Web 프로젝트 셋팅 2014-10-22

1. 프로젝트별 eclipse 바로가기 실행


2. 프로젝트 생성

- Project Explorer > New > Dynamic Web Project
- Project name : {프로젝트명 입력}
- Target runtime : {프로젝트를 실행시킬 서버선택}
- Use default location : {저장 경로 변경시만 선택}

3. SVN 과 연동

- Team > Share Project
- SVN선택 > Next
- Create a new repository location 선택 > Next
- Url 입력 > Next
- Use specified folder name 선택 > 'trunk'입력
ex) svn://{SVN_IP}/{프로젝트명}/trunk

4. 이클립스 & 톰캣 연동

- Project Explorer > New > Server
- Select the server type : {프로젝트 생성시 선택한(Target runtime) 서버와 동일한 버전선택}
- Server name : {프로젝트를 실행시킬 서버의 이름입력}
- Server runtime environment : {프로젝트 생성시 선택한(Target runtime) 서버와 동일하게 선택}
- 서버에서 실행될 프로젝트를 Available에서 Configured로 Add > Finish
- 'Servers' 뷰에서 해당서버 우클릭 > Start
- 브라우저에서 작동확인

5. 특정도메인에서 작동하도록 하기 위해서 호스트파일 수정

- Project Explorer > New > Server
- 127.0.0.1          {도메인명}