WEB
인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전세계적인 정보 공간
URI
- Uniform Resource Identifier
http://blog.example.com/entries/1
- URI SCHEME: http
- 호스트명: blog.example.com
- 패스: /entries/1
http://harry:pass@blog.example.com:8080/search?q=test&debug=true
- URI SCHEME: http
- 사용자: harry:pass
- 호스트명: blog.example.com
- 패스: /entries/1
- 쿼리 스트링: q=test&debug=true
- 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 기반
- 요청/응답형 프로토콜
- 동기형 프로토콜
- 스테이트리스
- 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
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가 필요하다.
Servlet Life Cycle
서블릿 컨테이너 참고
Web Container가 서블릿을 인식하는 방법
1. XML파일을 통해
2. 어노테이션
@WebServlet(value = "/*", loadOnStartup = 1)
value
: url 패턴
loadOnStartup = -1
: 기본, 요청을 받으면 서블릿을 로드
loadOnStartup = 1
: 서버 시작하면서 서블릿도 로드
3. Spring에서 제공하는 인터페이스 구현