ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [모각코] 5주차 결과 (15:00 ~ 18:00)
    카테고리 없음 2022. 8. 1. 17:45

    HTTP

    • HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
    • Plain text, JSON, XML, HTML등 다양한 형태의 정보도 전송함
    • 특징
      • 클라이언트 - 서버 구조
        • 클라이언트가 서버에 요청(Request)를 보내면 서버가 그에 대한 응답(Response)를 보내는 구조
        • 클라이언트는 서버에 요청을 보내고 응답을 대기
      • 주로 TCP/IP를 이용하는 프로토콜이다.
      • 연결 상태를 유지하지 않는 (Stateless) 프로토콜이다
        • 쿠키와 세션을 통해 상태 저장
      • 요청, 응답 방식으로 동작
    • 메서드
      • GET : 리소스 취득
      • POST : 서브 리소스의 작성, 리소스의 추가, 그 밖의 처리
      • PUT : 리소스 갱신, 리소스 작성
      • DELETE : 리소스 삭제
      • HEAD : 리소스의 헤더 취득
      • OPTIONS : 리소스가 서포트하는 메서드의 취득
      • TRACE : 자기 앞으로 요청 메세지를 반환 시험
      • CONNECT : 프록시 동작의 터널 접속으로 변경
      • Create → POST/PUT, Read → GET, Update → POST, Delete → DELETE

    웹 서버와 웹 어플리케이션 서버

    • 웹 서버 (WS)
      • 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 정적으로 처리해 반환
      • 단순히 저장되어있는 웹 페이지를 클라이언트로 전달하고, 클라이언트로 부터 컨텐츠를 전달받아 저장하거나 처리하는 역할
    • 웹 어플리케이션 서버 (WAS)
      • 프로그램 실행 환경과 데이터베이스 접속 기능 제공
      • 여러개의 트랜잭션 관리
      • 업무를 처리하는 비지니스 로직 수행
      • 웹 서버 + 웹 컨테이너
        • WAS가 웹 서버를 포함하는 개념이지만 둘이 같이 쓰는 경우가 있음
        • WAS가 할 일의 부담을 줄이기 위해
        • WAS의 설정파일을 외부에 노출시키지 않도록 하기 위해
      • Web Logic, Jeus, Tomcat, JBoss
    • 웹 컨테이너
      • JAVA 서블릿과 상호작용하는 WAS의 구성 요소
      • JSP와 서블릿을 실행시킬 수 있는 소프트웨어이며 서블릿 컨테이너 라고도 한다.
      • 클라이언트에서 요청을 하면 컨테이너는 HttpServletRequest, HttpServletResponse 객체를 생성햐며 post, get 여부에 따라 동적인 페이지를 생성
      • 서블릿의 생명주기를 관리한다.
        • 서블릿 클래스를 로딩하여 인스턴스화
          • 싱글톤으로 생성되므로 모든 클라이언트의 요청은 동일한 인스턴스에 접근
        • 초기화 메서드 (init) 호출
        • 요청이 들어오면 적절한 서블릿 메서드 호출
        • 서블릿 소멸 시 Garbage Collection 진행
        • JSP도 서블릿으로 변환함
      • 웹 서버에서 받응 요청을 분석하여 서블릿을 실행시키고, 서블릿에서는 웹 서버의 정보를 확인할 수 있도록 한다.
      • 통신지원
        • 소켓 연결, 포트 리스닝, 스트림 생성 등
      • 멀티 스레딩 지원
        • 컨테이너는 요청이 올 때 마다 새로운 자바 쓰레드 생성
        • 쓰레드 풀
      • 선언적 보안 관리, jsp 지원
      • 서블릿 수행 결과를 웹 서버에 전달하여 동적 페이지 제공

    서블릿

    • 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술
    • 특징
      • 클라이언트의 요청에 대해 동적으로 작동하는 웹 컴포넌트
      • HTML을 사용하여 response
      • JAVA의 스레드를 이용하여 동작한다.
      • MVC 패턴에서 컨트롤러로 이용된다.
      • 서블릿 컨테이너를 통해 동작한다.
    • 동작
      1. 클라이언트 요청
      2. HttpServletRequest, HttpServletResponse 객체 생성
      3. Web.xml이 어느 서블릿에 대한 요청인지 탐색
      4. 해당하는 서블릿에서 service() 메서드 호출
      5. doGet() 또는 doPost() 호출
      6. HttpServletRequest, HttpServletResponse 객체 소멸
    • 생명주기
      • init() : 클라이언트에서 요청이 들어왔을 때 메모리에 해당 서블릿이 없는경우 호출, 처음 한번만 실행된다. 새로운 요청이 들어오는 경우 스레드가 생성되어 처음 생성된 인스턴스를 사용한다.
      • init() 이후 클라이언트의 요청에 따라 service() 메소드를 통해 doGet() 또는 doPost() 로 분기한다.
      • 컨테이너가 서블릿 종료 요청을 하면 destroy() 메소드로 종료한다.
Designed by Tistory.