Spring에 대해 공부하다가 Tomcat이 나왔기에 알아보았다.
WebServer vs WAS
WebServer
- 정적 페이지를 담당
- Nginx, Apache가 대표적이다.
WAS
- WebServer + WebApplication **(+서블릿 컨테이너)를 포함해서 동적 페이지**를 제공
- Spring, Apache-Tomcat 등 프레임 워크가 대표적이다.
데이터 흐름
[Client → WebServer →WAS ⇒필요시 Data] 순으로 요청들어옴
- 만약 WebServer가 처리 가능한 정적페이지면 처리
- 만약 동적페이지 요청이면 WAS로 요청 넘김
즉, 정적페이지는 WebServer가, 동적페이지는 Spring이 담당한다.
하지만 최근엔 Apache-Tomcat 처럼 WAS안에서 알아서 정적, 동적 페이지를 처리하는 추세이다.
참고: HttpStatus 값
WAS 및 WebServer를 다루다 보면 HTTP 응답값들을 종종 보기에 정리 해보았다.
200
- 200 OK : OK
- 201 Created : 요청에 따른 데이터가 성공적으로 생성되었을 때
300
- 301 Moved Permanently : 새로운 URL로 이동할 떄
- 302 Found : 기존 URL을 유지하면서 컨턴츠만 새로운 URL에서 가져올 때
- 304 Not Modified : 캐싱된 파일이 반환되었을 때
400
- 400 Bad Request : Content-Type: application/json인데 JSON으로 안보낸 경우 혹은 비논리적인 경우
- 401 Unauthorized : 로그인 안했는데 유저 페이지 접근했을 때
- 403 Forbidden : 일반 유저가 어드민 페이지를 url로 접근했을 때
- 404 Not Found : 존재하지 않는 리소스에 접근할 때
- 405 Method Not Allowed : URL은 맞지만 HTTP Method가 틀릴 때
- 406 Not Acceptable : 헤더에 정의해놓은 바디를 요구하는데 요구 사항을 맞추지 못했을 때 (DTO에 Getter 메서드를 만들지 않았을 때)
500
- 500 Internal Server Error : 예상치 못한 대다수의 서버 에러
- 501 NotImplementedException : 클라이언트 요청에 대한 서버의 응답 수행 기능이 없음을 의미(서버가 지원하지 않는 새로운 Method를 사용하여 요청 - GET2, POST2...) BUT 항후 개발 시 지원 할 예정
- 502 Bad Gateway : WAS가 동작하지 않을 떄