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
[CLIENT] --- [Web Server] --- [Web Application Server] --- [DB]
- Web Container가 필요하다.
-
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에서 제공하는 인터페이스 구현
Author And Source
이 문제에 관하여(2022년 4월 18일 TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yshjft/2022년-4월-18일-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)