Chapter.02 웹 애플리케이션 아키텍쳐
컨테이너 (Container) : tomcat 대표적인 컨테이너
컨테이너 역할
- 통신(커뮤니케이션) 지원 :
웝서버와 서블릿과의 통신에 대해서 고민 할 필요 없음. - 생명주기 관리 :
Servlet의 탄생과 죽음 관리 - 멀티스레딩 지원 :
요청이 들어올 때 마다 새로운 자바 쓰레드 생성 , 응답하면 쓰레드가 끝남. - 선언적인 보안 관리 :
XML DD를 통한 관리 - JSP 지원 :
JSP를 Servlet으로 변환
컨테이너의 요청 관리 순서
- 사용자가 서블릿 링크를 클릭
- 컨테이너 요청이 들어오면 다음 두 객체를 생성
- HttpServletResponse
- HttpServletRequest
- URL을 분석 DD에서 어떤 서블릿 요청인지 알아내고 해당 서블릿 생성 후
Request , Response 객체를 인자로 넘김. - 컨데이너는 서블릿의 service()를 호출하고
요청에 지정한 방식에 따라 doGet() 혹은 doPost() 호출할지 결정함. - doGet() 메소드에서 동적인 페이지를 생성한 후, Response 객체에 실어 보낸 후
- 쓰레드 작업이 끝나면 Container는 Response 객체를 HTTP Response로 전환하여
클라이언트 내려 보내고 마지막으로 Request , Response 객체를 소멸시킴
Servlet의 세 가지 이름 가진다 : 그 이유는 편리성, 보안성, 확장성, 친밀성 (^^ 그냥 좋다)
- URL 이름 - 클라이언트가 호출시 사용함.
- 내부적인 이름 - 내부적인 맵핑을 위한 이름
- 실제 파일명 (패스포함) - 실제 패키지 클래스 이름 (.class 빼고)
배포서술자(web.xml : DD) 유형설명
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2eeweb-app_2_4.xsd">
<servlet>
-----------
컨테이너가 관리하는 서블릿 클래스에 대한 정보를 알수 있음.
<servlet-name>Chapter1 Servlet</servlet-name>
---------------------------------------------
내부 이름에 해당한다. <servlet-mapping>의 <servlet-name>과 맵핑됨.
<servlet-class>Ch1Servlet</servlet-class>
-----------------------------------------
패키지명과 포함하는 서블릿명 (.class는 생략)
</servlet>
<servlet-mapping>
-----------------
URL로 들어오는 검색하여 실제 실제 서블릿 클래스를 찾는 역할을 수행
<servlet-name>Chapter1 Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>
---------------------------------
URL 이름 - 실제 클라이언트가 호출하는 이름
</servlet-mapping>
</web-app>
|
** 정확한 경로가 없는 이유는 컨테이너는 정해지 위치에서 서블릿을 찾기 때문...
DD 역할
- 보안 역할 설정
- 오류페이지 설정
- 항목 라이브러리
- 초기화 구성 및 관련 정보 설정
서블릿, JSP 환경에서 MVC
- M - POJO (일반 자바 객체),
- 비지니스 로직 여기 들어감.
- 예를 들면 장바구니 정보
- DB연동등이 존재함.
- V - JSP가 수행함.
- C로 부터 모델 정보를 읽어 옴.
- 사용자가 입력한 정보를 C에게 넘김
- C - Servlet이 수행함.
- Request 객체로 부터 사용자가 입력한 정보를 뽑아 냄
- 모델정보를 수정 하거나 뷰에게 넘겨줄 새로운 모델를 생성한다.
J2EE 란 ?
- 스펙들에 대한 스펙 , 슈퍼 스펙
- 하위 스펙들
- 서블릿 스펙 2.4
- JSP 2.0 스펙
- EJB 2.1 스펙
- JNDI
- JMS
- J2EE 어플리케이션 서버 = 웹 컨테이너 + EJB 컨테이너 , 톰켓은 어플리케이션 서버가 아님.
- BEA의 윕로직
- JBoss AS
- IBM의 웹스피어