pom.xml은 Maven의 빌드 정보를 담고 있는 파일이며 POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정하는 부분이다.
자바 프로젝트를 관리하는 툴로 미리 작성된 xml 파일을 이용하여 라이브러리를 자동으로 다운로드하거나 프로젝트를 빌드해준다.
즉, 자바 소스를 컴파일하고 패키지해서 deploy까지 자동화 해준다는 것이다.
projact : Mavend의 XML 네임스페이스를 지정
modelVersion : Maven의 model Version
groupId : 그룹 ID태그
artifactId : 아티팩트ID 태그
version : 버전명 태그
packaging 패키징 형식을 지정하는 태그
name : 프로젝트의 이름
url : Maven의 url
properties : 프로젝트 관련 속성
parent : pom.xml의 상속에 관련된 태그
dependencies : 프로젝트가 의존하는 라이브러리들의 정보
dependency는 프로젝트의 라이브러리를 정의하는 태그로 기본으로 4가지가 있다.
groupId : 라이브러리의 그룹 아이디
artifactId : 라이브러리의 아티팩트 아이디
version : 라이브러리의 버전
scope : 라이브러리가 프로젝트 내에서 사용되는 범위
web.xml은 Web Application의 설정파일이며 DD(Deployment Descriptor 배포 설명자)라고 불린다.
web.xml에서는 크게 DispatcherServlet, ContextLoaderListener, Filter 설정을 한다.
DispatcherServlet은 클라이언트의 요청을 전달받는 객체이다. 하는 일은? 당연히 클라이언트의 요청을 처리하는 일이다. 그럼 어떻게 처리할까?
클라이언트의 요청을 처리하려면 크게 4가지 일이 진행되어야 한다.
첫째, 클라이언트의 요청을 처리해줄 컨트롤러를 찾는다.
둘째, 컨트롤러를 실행시킨다. (비지니스 로직 처리)
셋째, 클라이언트에게 보여질 View를 찾는다.
넷째, 응답 데이터와 View를 클라이언트에게 전달한다.
앞서 Dispatcher Servlet은 클라이언트의 요청을 처리하는 객체라고 설명했다. 웹 어플리케이션의 규모가 커진다면, 클라이언트의 요청또한 다양해질 것이고, 이를 처리할 Dispatcher Servlet도 늘어날 가능성이 있다.
다른 성격을 가진 서블릿이 생성될 것이고, 설정 또한 서블릿의 성격에 맞게 각각 적용시켜야 한다.
반면에, 모든 서블릿이 공통으로 가져야할 설정들도 있다.
즉 Servlet Context 단위가 아닌 Application Context 단위의 설정이 필요한데 이를 ContextLoaderListener 객체가 처리한다.
이 객체는 Application Context 단위의 설정을 생성한다.
참고로 Application Context 는 Web Application 의 Context이며, 모든 Servlet들이 참조가 가능한 부모 Context이다.
클라이언트에서 온 요청을 Dispatcher Servlet이 받기 전 거치는 부분이 있다.
바로 이 Filter 객체이다.
만약 스프링 시큐리티 필터가 적용되어 있다면, 인가 및 인증 처리를 먼저 처리하고, 인코딩 필터가 적용되어 있다면 클라이언트의 요청데이터를 인코딩하는 작업이 선 처리된 후 Dispatcher Servlet에게 필터링 된 데이터가 전달된다.