티스토리 뷰

최초작성일: 2018/01/12

목표: spring web 서버 구축

사전조사

아파치 : 정적인 데이터를 처리하는 웹서버
아파치 톰캣 : 동적인 처리를 담당하는 웹서버(Web Application Server)

클라이언트의 요청 중 웹서버가 자체적으로 처리할 수 없는 것을 Web Container(톰캣)이 대신 수행하여준다.웹서버만 존재한다면 정적인 컨텐츠로 페이지, 이미지 등만 가능하지만 컨테이너가 포함된다면 동적인 컨텐츠도 제공할 수 있다.톰캣에 기본적으로 제공되는 xml.Server.xml을 통하여 URI 경로 설정이 가능하며 (다른 기능도 알아보는중…)

Spring & Servlet

스프링은 Framework로써 자바 객체를 담고 있는 컨테이너이다.자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리하고 필요한 객체를 가져와 사용할 수 있도록 한다.
스프링은 Dependency Injection을 지원하는데 이는 곧, 객체가 의존하는 개체를 직접 생성하거나 검색할 필요가 없음을 의미한다.
스프링 내부에는 다양한 모듈이 있는데, 이 모듈은 다양한 외부 라이브러리를 사용한다.Maven : 프로젝트 빌드/관리를 위해 사용되는 프레임 워크이다.

 

Servlet – context.xmlServlet

클라이언트 요청을 처리하여 그 결과를 다시 클라이언트에게 전송하는 자바 프로그램상속받은 클래스이자 자바 클래스.
서블릿 컨테이너가 있으면 인스턴스 생성부터 초기화, 서비스, 소멸까지 담당해준다.*Context를 이용하면 여러 환경을 만들 수 있다. 기본적으로 Root Context와 Servlet Context로 구분할 수 있다.

Controller: 사용자 요청을 해석하고 처리 요청하여 그 결과를 View로 반환하는 역할을 한다.어노테이션: MetaData. 데이터를 위한 데이터, 컴파일 혹은 런타임 등 해석시기를 사용자가 설정할 수 있으며 마치 주석과 같이 특정 기능에 대한 정보를 제공한다.(@가 들어가는 것)

 

DispatcherServlet: Servlet Container에서 HTTP프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일앞에 둬서 중앙집중식으로 처리해주는 프론트 컨트롤러.즉, 클라이언트로부터 요청이 오면 톰캣과 같은 서블릿컨테이너가 요청을 받는데, 이 때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 영역.이를 사용해 줌으로써, 기존 모든 서블릿에 대해 URL 매핑을 web.xml에 등록해주던 작업을 할 필요가 없어졌음.

 

Bean: Spring Framwork가 관리하는 인스턴스로써 라이프사이클을 관리한다.Bean Container: Bean이 라이프사이클을 관리하는 기능을 일컫으며 DI container라고도 부른다.참조 : http://sailboat-d.tistory.com/33

 

WEB

Servlet Class는 설치와 등록하는 과정을 필요로 하고 서블릿 클래스를 등록하는 곳의 이름을 Web application deployment descriptor라고 한다.
이 곳이 바로 web.xml이다. 이는 WAS 구동 시 web.xml을 읽어 웹 애플리케이션의 설정을 구성하기 위해 존재한다.

Param: Parameter로서 범위를 나타낸다. 즉 context-param은 context의 범위(프로젝트 전체의 범위)Param-name: 초기화 파라미터 이름Param-value: 초기화 파라미터 값

servlet: 서블렛 이름과 클래스를 지정할 때 쓰는 묶음servlet-name: 서블릿이 찾아볼 이름이며 이를 통해 servlet-class의 식별자를 찾는다.servlet-class: 실제 servlet클래스가 위치한 곳과 클래스명으로 FullName이라고 한다.servlet-mapping: 요청 URL과 URL을 처리해 줄 서블릿을 연결해 준다.

작동 메커니즘

Chrome이 클라이언트라고 하였을 때, URL에 주소를 치면(정보를 요청하면) servlet-context에 디스팻처서블렛이 해당 요청을 매핑한 컨트롤러가 있는지 검색한다.

이를 통해 src/main/java에서 요청을 처리하고 결과를 출력할 view의 이름을 디스팻처서블렛으로 리턴해 준다.
그러면 그 이름을 토대로 처리 view를 검색하고 송신하고, 그 결과가 포함된 view를 다시 dispatcherservlet으로 송신해준다.

그러면 여기서 최종결과를 클라이언트에게 다시 전송해주는 형식.Web application왜 src/main/java에 컨트롤러가 보이지 않는가?기존의 JAVA구조대신에 Maven 구조를 사용한다. 메이븐 구조가 인기 있는 이유는 전 세계 공통으로 사용하기 때문이다. 그렇기 때문에 다른 사람과 공유할 일이 생기면 src 폴더만 공유하면 된다.-디렉토리 구조는 Maven이 관리한다

 

 

 

'Devops 1회차 > 기타' 카테고리의 다른 글

[JAVA]java.util.concurrent.ExecutionException 에러  (0) 2021.08.12
Maven  (0) 2021.08.12
Source Tree  (0) 2021.08.11