web.xml
객체를 프로그램 시작 전에 생성하기 위해서 사용한다.
스프링에서 프로그램을 시작 하기 전에 필요한 객체인 dispatcherServle를 생성한다.
이 객체는 springMVC의 핵심 컨트롤러로 모든 요청을 가로채 적절한 컨트롤러에 전달하고 응답을 처리하는 역할을 수행한다.
web.xml에서는 dispatcherServlet 말고도 root-context와 servlet-context를 생성하는데
root-context는 모든 서블렛과 필터가 공유하는 스프링 컨테이너로, 서비스, 리파지토리, DB, Log등 뷰를 제외한 bean을 설정한다.
servlet-context는 각 유저마다 제공되는 컨트롤러로 dispatcherServlet이 생성될 때 함께 생성되고, 안에 있는 핸들러 매핑, 뷰 리졸버, 컨트롤러 등을 활용하여 dispatcherServlet의 동작을 설정하고 돕는 역할을 한다.
서블릿 컨텍스트 파일 살펴보기
핸들러 매핑 : dispatcherServlet이 받은 서블릿에 해당하는 컨트롤러를 찾아 반환한다.
컨트롤러 : 서블릿에 해당하는 작업을 한 후 결과를 반환한다.
뷰 리졸버 : 컨트롤러로 부터 받은 값을 이용하여 조합하여 경로를 만들어낸다.
뷰 리졸버는 prefix와 suffix에 미리 형식을 맞춰두고 컨트롤러의 값을 받아서 prefix + 값 + suffix를 붙여 경로를 만드는 식이다.
만약 prefix에 "/WEB-INF/views/", suffix에 ".jsp"라는 값을 미리 가지고 있었다면
컨트롤러로 부터 "home" 이라는 값을 받았을때 "/WEB-INF/views/home.jsp" 라는 경로를 만들어내서 뷰 경로를 만드는 역할을 한다.
컨트롤러 매핑 설정하기
JSP에서는 @webservlet("/servlet")을 이용해서 서블릿을 매핑시켜 컨트롤러로 이동했었지만 스프링에서는 다른 방법을 사용한다.
@contoller
스프링에서는 서블릿컨텍스트 파일에 <annotation-driven /> 태그를 선언하고, 클래스 위에 @Controller를 붙여 컨트롤러 임을 명시하고, 함수에다가 @RequestMapping("/servlet")을 붙여 매핑이 되도록 한다.
<annotation-driven /> 태그는 @Controller, @RequestMapping등의 어노테이션 태그들을 활성화 시키는 역할을 수행한다.
이 태그에 의해서 핸들러매핑과 핸들러어댑터가 자동으로 등록되기 때문에 어노테이션 태그를 사용할수 있게 되는것이다.
<annotation-driven /> 태그를 사용하지 않으려면 따로 수동으로 핸들러매핑과 핸들러어댑터 객체를 등록해야 한다.
<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
핸들러 매핑은 컨트롤러의 이름을 찾아주는 역할, 핸들러 어댑터는 컨트롤러의 경로를 찾아주는 역할을 수행한다.
정적 리소스 설정하기
간단하게 말하면 MVC에 들어가면 안되는 정적 리소스들은 그냥 패스 하라는 설정이다.
이미지파일, CSS파일, JS파일과 같은 리소스 파일은 MVC를 거치지 않고 바로 적용 되어야 하기 때문에 설정을 통해 MVC의 대상에서 제외한다.
<resources mapping="/resources/**" location="/resources/" />
resources 폴더 안에 있는 파일들은 리소스 파일이니까 MVC 처리를 하지마라 라고 설정하는것이다.
mapping은 웹 요청 경로 패턴을 설정하고, location은 실제 요청 경로의 패턴에 해당하는 자원 위치를 설정한다.
스프링에서 사용하는 @Controller, @service, @Repository 등의 어노테이션은 @Component 에다가 이름을 붙인것이다.
HTML에서 footer, article, header가 div와 동일하지만 이름에 의미를 둔것과 비슷하게 하는 역할에 따라 이름을 분류한것으로, HTML에서는 이름으로 구분하기만 하는것과 다르게 스프링에서는 어노테이션을 이용해서 자신의 역할을 스프링에게 알려주는 역할을 한다.
그로인해 스프링으로 부터 의존성과 역할을 부여받는다.
메이븐 환경 설정 파일 pom.xml
pom 파일의 시작과 끝은 <project></project>이며, 주로 프로젝트 전체에 적용되는 정보를 기술하거나 <dependencies> 태그를 이용해 외부 라이브러리를 가져올때 사용한다.
빌드 build
프로젝트를 빌드할때 필요한 요소들은 빌드 요소 안에 설정한다.
빌드는 테스트 할때 필요한 객체들을 들여 놓고 쓰다가 테스트가 끝나고 배포할 때 테스트 환경에서 쓰던 객체들을 한번에 압축해서 배포 서버에 옮기기 쉽게 하기 위해서 사용한다.
따라서 빌드는 개발환경에서 잘 작동하는지 확인하고 실제 서버로 배포할 준비가 된 애플리케이션을 패키징 하는 과정이다.
'프로그래밍 공부' 카테고리의 다른 글
2025.03.12 스프링 공부 (0) | 2025.03.12 |
---|---|
2025.03.11 스프링 공부 (0) | 2025.03.11 |
2025.03.07 스프링 공부 (0) | 2025.03.07 |
2025.03.04 SQL 공부 (0) | 2025.03.04 |
2025.02.28 SQL 공부 (0) | 2025.02.28 |