2022년 4월 18일 TIL

WEB

인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전세계적인 정보 공간

URI

  • Uniform Resource Identifier
  • http://blog.example.com/entries/1
    • URI SCHEME: http
    • 호스트명: blog.example.com
    • 패스: /entries/1
  • http://harry:[email protected]:8080/search?q=test&debug=true
    • URI SCHEME: http
    • 사용자: harry:pass
    • 호스트명: blog.example.com
    • 패스: /entries/1
    • 쿼리 스트링: q=test&debug=true
      • 쿼리 파라미터 : q=test
  • URI에서는 사용할 수 있는 문자가 정해져 있다.
    • 정해진 문자외에는 encode와 decode를 하여 찾아야 한다.

경로

  • 상대 경로

    • ./: 현재 위치
    • ../: 상위 위치
    • 배포환경을 고려해 상대 경로를 더 많이 사용한다.
  • 절대 경로

    • /로 시작
  • example
    시작점: /foo/bar

상대 경로절대 경로
hoge/foo/bar/hoge
hoge/fuga/foo/bar/hoge/fuga
./hoge/foo/bar/hoge
../hoge/foo/hoge

HTTP

  • HyperText Transfer Protocol
  • HyperText를 전송하기 위한 Protocol
  • 동기형 프로토콜
    • 요청이 있으면 반드시 응답이 있어야한다.(서버에서 응답 올 때까지 대기)

특징

  • TCP/IP 기반
  • 요청/응답형 프로토콜
  • 동기형 프로토콜
  • 스테이트리스

headers

  • Request header
  • Response header
  • General header
  • Respresentation header

method

  • GET(읽기), POST(생성), PUT(수정), DELETE(삭제)
  • HEAD: 리소스의 헤더 취즉
  • OPTIONS: 리소스가 지원하는 메서드의 취득
  • TRACE: 자기 앞으로 요청 메시지를 반환
  • CONNECT: 프록시 동작의 터널 접속으로 변경

HTML

  • Hyper Text MarkUp Language
  • Hytper Text = 연결성을 가지고 있는 text

웹의 기술적 특징

  • 하이퍼 미디어 시스템
  • 분산 시스템: 복수의 컴퓨터에 의한 처리

Web Application Architecture

  • Architecture
    환경과 동작을 설명하는 설계도

  • CDN
    client와 가장 가까운 캐시 서버

  • Job Queue
    오래 걸리는 작업을 배치하는 곳

Web Server VS Web Application Server

Web Server

  • 정적 리소스 지원
  • HTML, CSS, JS, 이미지 등

Web Application Server

  • 웹서버 기능 + 동적 리소스 지원
  • DB 조회, 비즈니스 로직 수행

Web Container

  • 웹 컨테이너(서블릿 컨테이너)
  • Servlet, JSP 실행

Web Server, Web Application Server

  • WAS가 Web Server의 기능도 가지고 있기에 WAS만 가지고 웹 시스템을 구성할 수 있으나 이는 WAS에 무리를 주게 된다.
  • 따라서 Web Server와 WAS 모두 사용하여 아래와 같이 배치한다.

    [CLIENT] --- [Web Server] --- [Web Application Server] --- [DB]

서블릿(Servlet)

  • client로 부터 요청을 받아 특정 Service를 호출한다.
  • 개발자가 의미있는 비즈니스 로직에 집중할 수 있도록 해준다.
  • 서블릿 구동을 위해서 WAS가 필요하다.
    • Web Container가 필요하다.

Servlet Life Cycle

  • Thread

    • 동시 처리 지원을 위한 멀티 thread 지원
    • 매 요청마다 다른 thread를 사용
    • Servlet의 인스턴스에 있는 메서드 요청
  • Servlet은 요청마다 새롭게 생서되는 것이 아니다.

  • init(): 생성시 한번만 호출

  • service(): 요청마다 호출

  • destroy(): WAS 종료되는 경우 호출

Web Container가 서블릿을 인식하는 방법

1. XML파일을 통해

2. 어노테이션

@WebServlet(value = "/*", loadOnStartup = 1)
  • value: url 패턴
  • loadOnStartup = -1: 기본, 요청을 받으면 서블릿을 로드
  • loadOnStartup = 1: 서버 시작하면서 서블릿도 로드

3. Spring에서 제공하는 인터페이스 구현

좋은 웹페이지 즐겨찾기