CERN 연구소에서 팀 버너스 리와 동료들이 여러 연구 자료를 쉽게 검색하기 위해서 프로토콜과 프로그램을 개발했는데, 이것이 월드 와이드 웹이다
WWW는 HTTP프로토콜로 규정되어 있고 웹 브라우저는 이를 따른다. WWW는 TCP/IP프로토콜로 구현된 인터넷 통신망을 기반으로한 프로토콜이다.
HTTP란 서버와 클라이언트가 어떻게 메세지를 주고 받을지 정해놓은 규칙이다. 요청과 응답으로 구성되어 있다. HTTP는 요청을 통해 응답을 받게 되면 연결을 끊어버린다.( Stateless )
아파치는 오픈 소스 커뮤니티에서 개발되고 유지되는 다양한 소프트웨어 프로젝트들을 의미한다.
아파치 소프트웨어 재단은 이러한 프로젝트들을 지원하고 관리하는 비영리 단체이다.
그중 유명한 프로젝트는 아파치 HTTP 서버, 톰캣, Maven이 있다.
아파치 HTTP 서버는 클라이언트의 HTTP요청을 처리하고 응답으로 정적인 콘텐츠( HTML, 이미지 )를 제공하거나 동적인 콘텐츠를 제공하기 위해 다른 프로그램( PHP, MySQL등 )을 모듈로 붙여서 사용할 수 있다. JSP를 이용하려면 톰캣을 연동한다.
톰캣은 Java 기반의 서블릿 컨테이너이자 웹 서버이다. JSP/Spring으로 웹사이트를 구축한다면 톰캣은 거의 반드시 사용된다고 볼 수 있다. 톰캣에는 오로지 서블릿/JSP 및 HTTP 처리 엔진만 들어있다.
Springboot는 톰캣을 내장하고 있어 별도의 웹 서버 구성을 필요로 하지 않는다.
프로젝트는 Maven의 표준 디렉토리 구조를 따르며 프로젝트의 종속성은 프로젝트 객체 모델(Project Object Model, POM) 파일에 정의된다. pom.xml에는 프로젝트의 설정, 종속성, 플러그인 및 빌드 프로세스에 대한 정보가 포함된다.
settings.xml 또는 pom.xml 파일에 필요한 라이브러리만 적으면 Maven이 알아서 다운받고 설치해주고 경로까지 지정해준다.
Maven은 Central Repository 리소스에서 종속성을 가져와 라이브러리나 플러그인 등을 자동으로 다운로드하여 관리한다.
Maven은 일관적인 방법으로 프로젝트를 관리하고 종속성과 빌드 프로세스를 자동화하도록 도와준다.
Maven의 장황한 설정 파일과 에러가 쉽게 나는 문제를 해결하기 위해서 만들어졌다. Groovy 기반의 빌드 도구이다.
configurations
는 기본적으로 비어있는데 Gradle이 기본적인 의존성 구성을 자동화 했기 때문이다.
일반적인 기본 구성은 implementation
, compileOnly
, runtimeOnly
, testImplementation
가 있다.
만약에 아래와 같은 디펜던시를 추가한다면 configurations에도 추가를 해줘야 한다.
dependencies {
asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor'
}
configurations {
asciidoctorExt
}
자바를 사용해 웹 서버의 요청을 처리하는 서버 사이드 컴포넌트를 말한다.
서버에서 실행되는 프로그램으로 서버가 요청을 처리할 수 있는 서블릿을 찾아 서블릿을 실행하여 동적인 응답 처리를 하게 된다.
서블릿 컨테이너(웹 서버)는 서블릿의 생명주기를 관리한다. 서블릿은 서블릿 컨테이너에 의해 특정한 요청에 재사용될 수 있다.