1. 클라이언트와 서버
- 클라이언트 : 서비스를 요청하는 애플리케이션으로 사용자의 입력을 수행하고, 서버에 대한 응답으 화면에 표시한다.
- 서버 : 서비스를 제공하는 애플리케이션으로 페이지의 지원이나, 공유 데아터의 처리 및 저장 등의 비즈니스 로직을 수행하며 DB와 커뮤니케이션을 수행한다.
2. HTTP통신
- HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
프로토콜
- 서로간의 통신을 위한 약속, 규칙
- 주고 받을 데이터에 대한 형식을 정의한 것
- 상태를 유지하지 않는다(같은 클라이언트가 2번 연속으로 같은 값을 보내고 이전값은 누가 보냈는지 알 수 없음, 이를 위해 쿠키/세션을 사용하여 상태를 유지시킬수 있음)
특징
- Client의 요청(Request)이 있을 때만 서버가 응답(Response)하는 단방향 통신이다.
- connectionless, 즉, 계속해서 서버와 브라우저가 연결되어 있지는 않다. 서버는 클라이언트가 요청한 정보를 전송하고 곧바로 연결을 종료한다. 이는 쿠키, 세션, 토큰등을 통해 독립적 요청에 대한 연결을 유지하는 방법이 있다.
- 서버가 요구하는 API에 맞게 요청해야 응답을 받을 수 있다.
대표적인 Request Method
- GET
- 필요한 resource를 요청하여 받는 것으로 DB에는 변동이 없다.(값을 받을때)
- Body가 없기 때문에 URL 마지막에 값을 붙여 보낸다.
- POST
- 서버에 resource를 보내면서 생성해 달라고 요청.(값을 보낼때)
- 데이터를 Body에 넣어서 보낸다
- PUT : 서버에게 resource의 업데이트 하거나 resource가 없다면 새로운 resource를 생성해 달라고 요청.
- DELETE : 서버에게 resource의 삭제 요청.
구조
?year=2021&month=10&day=1
---
String year = request.getParameter("year");
String month = request.getParameter("month");
Iterator enum = request.getParameterNames();
Map paramMap = request.getParameterMap();
?year=2021&year=2020&year=2021
---
String[] years = request.getParameterValues("year");
응답 메세지
1xx 메시지 : 정보 교환
2xx 메시지 : 성공(정상작동)
3xx 메시지 : 다른 URL 요청
4xx 메시지 : 클라이언트 에러
5xx 메시지 : 서버 에러
※ 2~5번까지 메시지 잘 알고 있기, 웹 페이지 구현하는데 많이 발생하는 오류 메세지임
3. WAS(예.Tomcat)
- 인터넷 상에서 HTTP 프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로, 주로 동적 서버 컨텐츠를 수행하는 것으로 웹 서버와 구별이 되며, 데이터베이스 서버와 같이 수행
- 웹 서버 단독으로 처리할 수 없는 데이터베이스의 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공함
참고자료 : https://medium.com/@lidiach217/web-%EA%B8%B0%EB%B3%B8%EA%B0%9C%EB%85%90-http-%ED%86%B5%EC%8B%A0-cf5f89906c8e