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의 웹스피어

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

Head First Servlets & JSP 내용정리-1장


Chapter.01 먼저 간략히 알아봅시다.

- HTTP : RFC2616에 정의

HTTP 메소드

  1. GET -
  2. POST - submit
  3. HEAD
  4. TRACE
  5. PUT
  6. DELETE
  7. CONNECT

GET 해부 하기

GET /select/selectBeerTaste.jsp?color=dark&taste=malty HTTP/1.1
--- -------------------------- ----------------------- --------  
ⓐ  ⓑ                         ⓒⓓ                     ⓔ
ⓐ - HTTP Method
ⓑ - Web Resource Path
ⓒ - Resource 와 Parameter 구분자 (?)
ⓓ - Parameter의 구분자는 $name=$value (&)
ⓔ - protocol version


User-Agent: Mozilla/5.0 (Macintonsh; U; PPC OS X Mach-O;eu-US;rv:1.4) Gecko/20030624 Netscape/7.1
Accept : text/xml,application/xml/application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/xmng,....
Accept-Language: en-us,en;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
------------------------------------------------------------------
요청헤더

POST 해부 하기

POST /select/selectBeerTaste.do HTTP/1.1
--- -------------------------- --------  
ⓐ  ⓑ                          ⓒ
ⓐ - HTTP Method
ⓑ - Web Resource Path
ⓒ - protocol version


User-Agent: Mozilla/5.0 (Macintonsh; U; PPC OS X Mach-O;eu-US;rv:1.4) Gecko/20030624 Netscape/7.1
Accept : text/xml,application/xml/application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/xmng,....
Accept-Language: en-us,en;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
------------------------------------------------------------------
color=dark&taste=malty : payload (Message body)
요청헤더

HTTP 응답

HTTP/1.1 200 OK
-------- --- --
ⓐ       ⓑ   ⓒ
ⓐ - Web Server Protocol Version
ⓑ - State Code
ⓒ - State Code String
Set-Cookie:JSESSIONID=0AAASDFDEFGG;Path=/testEL
Content-Type:text/html MIME 타입이라고 부름.
Content-Length:397
Date: Wed, 19 Nov 2003 03:25:40 GMT
Server : Apache-Coyote/1.1
Connection : close
------------------------------------------------------------------
HTTP 응답 헤더
<html>
</html>


http:://www.wickedlysmart.com:80/beeradvice/select/beer1.html
  • http : 프로토콜
  • ::// : 프로토콜과 서버 구분자
  • www.wickedlysmart.com : 서버주소
  • : : 서버와 포트 번호 구분
  • 80 : 서비스 포트 번호
  • /beeradvice/select/beer1.html : 리소스 위치
TCP 주요 번호 [ 0 ~ (2^16 -1) ]
  • 21 - FTP
  • 23 - Telnet
  • 25 - SMTP
  • 37 - Time
  • 80 - HTTP
  • 110 - POP3
  • 443 - HTTP3

서블릿 시험하기

  • web.xml - 배포서술자 (DD : Deployment Descriptor)
    • 웝 어플리케이션 하나의 DD 만 존재합니다.^^
    • DD 안에는 다수 서블릿을 정의 할 수 있습니다.
    • <servlet-name>는 <servlet>와 <servlet-mapping>을 연결
    • <servlet-class>:  자바 클래스 이름이 들어 갑니다.
    • <url-pattern> : 클라이언트가 요청을 보낼 이름 입니다.
  • tomcat를 재구동 해야 합니다.
    • $TOMCAT_HOME\bin\shutdown.sh - 중단
    • $TOMCAT_HOME\bin\startup.sh - 시작
JSP는 HTML에 자바를 넣기 위해서 탄생했다고 함.

[Head First]Servlets & JSP 내용정리-요약

Head First Servlets & JSP 내용정리-요약

주요사이트 정리


사전
약어정리(혹은용어)
  • MVC : Model-View-Controller
  • CGI : Common Gateway Interface
  • DD : Deployment Descriptor 배포서술자
  • JSP : Java Server Page
  • URL : Uniform Resource Locator
  • POJO : Plain Old Java Object, 일반적인 자바 객체
  • EL : Express Language, 표현식
  • TLD : Tag Library Descriptor, 태그 라이브러리 서술자
  • JSTL : JSP Standard Tag Library(JSTL1.1), JSP 표준 태그 라이브러리
  • JNDI : Java Naming & Directory Interface
  • trade-off : 성능일지 데이터의 정확성 하나를 선택해야 하는 경우
  • Transfer Object : 전송 객체 , Data Transfer Object , 즉 비지니스 서비스에서 데이터 전송을 위해서 사용하는 직렬화된 자바 객체
  • WAR : WebARchive, jar와 동일 단지 확장자 jar에서 war로 변경된것 뿐
  • jspf : include 포함하는 jsp, f는 fragment
준비물
  • tomcat  - 설치 여부 , 시험 여부 완료 (O)
    • 설치 버전 : jakarta-tomcat-5.0.30.exe
    • 설치 위치 : C:\dev_study\Tomcat5.0
    • 포트번호 : 8080
    • admin 암호 : admin
    • 기본서비스 URL : http://localhost:8080/
    • JVM 64bit용을 사용할 경우 정상적으로 구동 되지 않는다.ㄴ
  • J2SE SDK 1.3 이상 - 설치 여부 (O)
    • 설치 버전 : javac 1.6.0_31
    • 설치 위치 : c:\dev\Java\jdk1.6.0_31
    • 설치 OS 환경 : 32bit용 JDKs
  • servlet 관련 라이브러리
    • $TOMCAT_HOME\common\lib\servlet-api.jar
  • JSTL 1.1 설치 : JSP 표준 태크 라이브러리
    • JSP 2.0 스펙의 일부 아님.
    • WEB-INF/lib에 jstl.jar를 설치 해야 함.
    • tomcat 5와 별도로 설치 (Examples 설치 하면 설치됨.)
    • 톰캣예제의 JSTL의 위치는 webapps/jsp-examples/WEB-INF/lib/jstl.jar


관용구문 정리


자바 SE 공부시작

앞으로 정리하여 보여줄 Java SE 학습 결과 범위
새로운 기술에 대한 정리

  1. Generic