2013년 9월 6일 금요일

[Head First]Servlets & JSP 내용정리-2장

Chapter.02 웹 애플리케이션 아키텍쳐

컨테이너 (Container) : tomcat 대표적인 컨테이너

컨테이너 역할

  • 통신(커뮤니케이션) 지원 :
    웝서버와 서블릿과의 통신에 대해서 고민 할 필요 없음.
  • 생명주기 관리 :
    Servlet의 탄생과 죽음 관리
  • 멀티스레딩 지원 :
    요청이 들어올 때 마다 새로운 자바 쓰레드 생성 , 응답하면 쓰레드가 끝남.
  • 선언적인 보안 관리 :
    XML DD를 통한 관리
  • JSP 지원 :
    JSP를 Servlet으로 변환

컨테이너의 요청 관리 순서

  1. 사용자가 서블릿 링크를 클릭
  2. 컨테이너 요청이 들어오면 다음 두 객체를 생성
    • HttpServletResponse
    • HttpServletRequest
  3. URL을 분석 DD에서 어떤 서블릿 요청인지 알아내고 해당 서블릿 생성 후
    Request , Response 객체를 인자로 넘김.
  4. 컨데이너는 서블릿의 service()를 호출하고
    요청에 지정한 방식에 따라 doGet() 혹은 doPost() 호출할지 결정함.
  5. doGet() 메소드에서 동적인 페이지를 생성한 후, Response 객체에 실어 보낸 후
  6. 쓰레드 작업이 끝나면 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의 웹스피어

댓글 없음: