본문 바로가기

카테고리 없음

3.미니 MVC


웹 요청(request) --> servlet(받음)--> 모델  ----------> servlet(완료 된 것을 받음) --> view(결과물 출력)
                              컨트롤러            business Logic                                                JSP
                                                      DB                                                                 
될 수 있으면 상대방의 이름이 없어야 한다. 그래서 끈끈한 것을 없애야 한다.
클래스가 다른 클래스와 연관이 되는데 다른 클래스 이름을 내 것에 쓰면 끈끈함이 올라 가기 때문에 될 수 있으면 이름을 쓰면 안된다.


4단계로 따라하기
1. 웹 애플리케이션의 사용자 화면에 대한 검토
2. 아키텍쳐 살펴보기
3. 개발 및 배포 환경 살펴보기
4. 웹 애플리케이션 개발

DD(web.xml)에 어떠한 url이 들어오면 어떤 써블릿이 처리하게 되어있다 라는게 써있다.

요청마다 respose와 request 객체를 만들어서 이거에 대한 주소 값을 써블릿에게 넘겨주면 써블릿은 그안의 값을 읽어서 필요 한 것만 빼서 모델에 넘겨 준다.
모델에서 결과 값을 써블릿에게 리턴해 주면 아까 받은 request객체에 넘겨 주고 그걸 JSP에 포워딩 해준다.
그리고 JSP는 HTML을 생성하고 그걸 컨테이너에 넘겨주어 클라이언트에게 넘겨준다.  


개발 진행
1. 사용자가 제일 먼저 볼 HTML 폼 생성 테스트
2. 컨트롤러 서블릿 버전 1을 만들고, 버전 1에서 HTML폼이 서블릿을 호출하면 단순히 파라미터 값을 출력
3. 모델 클래스를 위한 테스트 클래스를 만들고 다음에는 진짜 만든다.
4. 서블릿 버전 2로 올리고
5. JSP를 만들고 모델로 부터 결과 값을 response에 담은다음에 포워딩



4장...
JSP
오브젝트 타입으로 들어가서 List로 캐스팅 해주어야 한다. (22페이지) 자바 코드 "style"

써블릿은 HTTPservlet을 상속 받아서 만들어 진다.

써블릿은 컨테이너가 관리함
-Request와 Response객체 생성
-서블릿의 새로운 스레드 만들고 service 메소드 호출
-url 참고후 어떤 서블릿을 요청했는가 파악
-스레드에 request와 response를 넘긴다.
-service()메소드에서는 get이나 post에 따라 doGet,doPost를 호출 한다.
-그리고 request, response인자값은 넘긴다.
-서비스메소드가 끝나면 스레드를 소멸하거나 아니면 컨테이너 관리하는 스레드 풀로 돌려 보내고 request와 response 객체는 가비지 컬렉션 대상이 된다.
pool에 이밀 쓰레드나 객체를 만들어 넣고 사용 할 것이 있으면 꺼내서 쓰고 다 쓰고 없애는 것이 아니라 pool에 다시 돌려 보낸다.

서블릿의 일생
-서블릿은 초기화된 상태인 오직 하나의 상태만 가진다.
-서블릿이 초기화 되지 않았다는 것은 초기화 중이거나, 소멸중이거나, 존재하지 않은 상태 이거나 이거 셋중하나

라이프사이클
init()
-service()메소드전에 실행 되어야 한다.
serviec()
-최초 클라이언트의 요청을 받았을때 컨테이너는 새로운 스레드를 생성하거나 스레드 풀로부터 하나를 가지고 와서 service를호출, doGet,doPost()를 결정한다.

컨테이너는 서블릿 하나에 다수의 요청을 처리하기 위하여, 다수의 스레드를 사용 합니다.(다수의 서블릿 인스턴스를 만들지 않는다.)
그리고 요청마다 새로운 request,response객체를 생성

servletConfig는
-서블릿 당 하나가 존재하는 개체로 서블릿 배포시 설정된 정보를 넘겨주기 위한 것(서블릿자체)
servletContext
-웹 애플리케이션 당 하나가 존재하는 객체로, 웹 애플리케이션의 파라미터 정보를 읽어오기 위한 객체, 서버 정보를 확인하기 위한 것(이거는 서블릿 들의 정보)