클라이언트(Client) : 일반적으로 접속자와 동일한 의미를 가진다. 넓은 의미에서는 요청을 보내는 모든 주체를 클라이언트라고 한다.
서버(Server) : 서비스를 제공하는 주체이다. 클라이언트의 요청에 따라 적절한 응답을 돌려준다. 네이버, 카카오, 등 모두가 서버의 의미를 가지고 있다.
요청(Request) : 클라이언트가 서버로 보내는 요청을 의미한다. 요청은 크게 아래의 구성요소로 되어있다.
프로토콜(Protocol) : HTTP 혹은 HTTPS(SSL, Secure Sockets Layer) (-> https)
주소(URL, Address) : 요청을 보내는 경로. (-> naver.com)
방식(Method) : 요청을 보내는 방식. 자세한 내용은 후술한다. (-> GET)
헤더(Header) : 요청에 대한 명세. (브라우저 정보 등을 포함한다.)
페이로드(Payload) : 요청에 함께 실어보낼 데이터를 의미한다.
요청 방식(Request Method) :
GET : 데이터를 압축하지 않고, 요청에 실어보낼 데이터가 주소에 노출된다. form 태그에서 지원한다. 브라우저 주소창에 주소를 적고 요청을 보내면 해당 요청 방식을 이용한다.
POST : 데이터를 압축하기도 하고, 요청에 실어보낼 데이터가 주소에 노출되지 않는다. form 태그에서 지원한다. 주로 로그인, 회원가입, 글쓰기 등 실질적으로 데이터가 서버로 넘어갈 때 사용하는 요청 방식이다. C(Create)나, U(Update)에 사용된다. 간혹, D(Delete)에 사용되기도 한다.(단순 페이지 표시를 제외한 나머지 목적으로 사용.)
PUT : 서버에 데이터를 C 혹은 U 하기위해 사용한다. form 태그에서 지원하지 않음으로 XHR(XML Http Request)에서 사용한다.
PATCH : 서버에서 데이터를 R하기위해 사용한다. form 태그에서 지원하지 않음으로 XHR(XML Http Request)에서 사용한다.
DELETE : 서버에서 데이터를 D하기위해 사용한다. form 태그에서 지원하지 않음으로 XHR(XML Http Request)에서 사용한다.
HEAD : 생략
OPTION : 생략
TRACE : 생략
응답(Response) : 클라이언트 요청에 따라 서버가 만들어내 클라이언트로 다시 돌려주는 행위 혹은 그러한 것을 의미한다.
응답 코드(Response Code 혹은 상태 코드, Status Code) :
200 : OK, 요청에 대한 응답이 정상적으로 완료되었음을 의미한다. 주로, 200이상 300미만의 상태 코드에 대해 정상적인 응답이 나갔다고 판단한다.
400 : Bad Request, 요청에서 요구하는 요청 규격을 클라이언트가 일부 혹은 전체 누락하였다는 의미이다. 가령, 로그인시 이메일과 비밀번호 둘 다 입력해야하는데, 둘 중 하나 이상을 누락하였다는 의미.
403 : Forbidden, 해당 요청에 대한 접근 권한이 없거나, 거절되었을 때 사용하는 상태코드이다.
404 : Not Found, 해당 요청에 대한 서버 로직(맵핑) 혹은 리소스가 존재하지 않는다는 의미이다.
405 : Method Not Allowed, 해당 요청에 대한 요청 방식이 받아들여질 수 없다는 의미이다.
500 : Interval Server Error, 요청한 로직을 처리하는 도중 서버 내부에서 오류가 발생하였다는 의미이다.
아파치 톰캣(Apache Tomcat) : 아파치에서 만든 자바 언어를 이용하여 웹 개발을 쉽게 할 수 있도록 만든 웹 서버(정확히는 WAS)이다. 결론적으로 톰캣은 JSP(Java Servlet Page)로 운영되나 JSP를 통한 직접 개발 방식은 사장되었고, 그 자리를 스프링과 스프링부트가 대체하고 있다. 즉, Spring 혹은 Spring Boot로 만든 웹 어플리케이션은 JSP로 해석되며 톰캣이 실행시킨다.(결과적으로는)
컨트롤러(Controller) : 요청을 받고 응답을 돌려주는 맵핑을 정의하기 위해 사용한다. 이가 가지는 메서드의 이름은 요청방식(Request Method)으로 시작하는 것이 좋은데, 가령 get, post, delete, put, patch 등의 단어로 시작하도록 만드는 것이 좋다는 뜻.
서비스(Service) : 주요 로직을 처리하기 위해 사용한다. 로직을 포함하는 메서드는 트랜잭션(Transaction) 단위로 작성하는 것이 좋은데, 가령, '송금'로직을 구현하기 위해 '입금', '출금' 두 개의 메서드로 분리하는 것이 아닌 '송금' 하나의 메서드로 만드는 것이 좋다는 뜻.
매퍼(Mapper) 혹은 DAO(Data Access Object) : 로직 처리 시, 데이터베이스에 접근하기 위해 사용한다. 이가 가지는 메서드들의 이름은 SQL 키워드로 시작하는 것이 좋은데, 가령 insert, select, update, delete 등의 단어로 시작하도록 만드는 것이 좋다는 뜻.