보라코딩
코드로 배우는 스프링 웹 프로젝트 Part2 본문
spring legacy project 생성하여 기초설정
pom.xml 에서 spring 버전과 java 버전이 너무 낮기에
5.2.7과 1.8로 변경
저장 필수!
저장했으면 Maven - update project
그럼 자바 버전이 1.8이 되었고 스프링이 5.2.7로 원하는대로 설정된 것을 볼 수 있다.
lombok maven 구글에 검색
1.18.16으로 dependency 붙여넣기
junit 버전 4.12로 수정해서 높여줌
와... lombok dependency 넣는데 계속 빨간줄 쳐져서 왜그러나 했는데 너무 간단한 오류여서 당황스럽다..
문제:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'plugin'. One of '{"http://maven.apache.org/POM/ 4.0.0":parent, "http://maven.apache.org/POM/4.0.0":description, "http://maven.apache.org/POM/4.0.0":prerequisites, "http://maven.apache.org/POM/4.0.0":issueManagement, "http://maven.apache.org/POM/4.0.0":ciManagement, "http:// maven.apache.org/POM/4.0.0":inceptionYear, "http://maven.apache.org/POM/4.0.0":mailingLists, "http:// maven.apache.org/POM/4.0.0":developers, "http://maven.apache.org/POM/4.0.0":contributors, "http://maven.apache.org/ POM/4.0.0":licenses, "http://maven.apache.org/POM/4.0.0":scm, "http://maven.apache.org/POM/4.0.0":organization, "http://maven.apache.org/POM/4.0.0":build, "http://maven.apache.org/POM/4.0.0":profiles, "http://maven.apache.org/ POM/4.0.0":modules, "http://maven.apache.org/POM/4.0.0":repositories, "http://maven.apache.org/POM/ 4.0.0":pluginRepositories, "http://maven.apache.org/POM/4.0.0":reports, "http://maven.apache.org/POM/4.0.0":reporting, "http://maven.apache.org/POM/4.0.0":dependencyManagement, "http://maven.apache.org/POM/ 4.0.0":distributionManagement}' is expected.
해결방법:
dependency를 dependencies 안에 넣어주지 않아서 그렇다...
와........... 이런 조그만 실수를 하면 시간을 날릴 수 있음을 깨달음..
나는 lombok 오류인줄 알고 계속 찾아봤었다 ㅠㅠ
위에 있는 spring-webmvc 복사해서
아래 붙여넣고 test로 변경해준다
구글에 servlet maven 검색하여 4.0.1 버전 붙여넣기
기존버전 삭제하고 붙여넣기
log4j 버전 낮아서 1.2.17로 변경 후
아래 부분 삭제!
왼쪽아래 servers에 톰캣9.0 더블클릭 후
modules 항목 클릭 후에 edit 눌러서 path를 / 로만 수정한 후 ok 클릭
* 프로젝트 구동 시 관여하는 XML
: web.xml (Tomcat 구동 관련 설정), root-context.xml, servlet-context.xml (두개는 스프링 관련 설정)
1. web.xml (서블릿과 관련된 설정 )
프로젝트 구동은 web.xml에서 시작
가장 먼저 구동되는 것은 Context Listener (서블릿 프로젝트 실행될때 읽어들이는 것)
<context-param>에는 root-context.xml 경로 설정되어 있다
2. root-context.xml
이 파일이 처리되면 빈(bean) 설정들이 동작함
root-context 에 정의된 객체들은 스프링 영역(context)안에 생성되고
객체들 간의 의존성이 처리됨
root-context.xml 처리된 후에는 스프링 MVC에서 사용하는 DispatcherServlet이라는 서블릿 관련 설정이 동작함
3. servlet-context.xml
DispatcherServlet 클래스는 스프링 MVC 구조에서 가장 핵심역할하는 클래스
웹 관련 처리의 준비작업 진행할때 사용하는 파일이 servlet-context.xml
DispatcherServlet에서 XmlWebApllicationContext 이용해서 servlet-context.xml 로딩하고 해석 시작
이 과정에서 객체(bean)은 기존 객체(bean)과 연동
web.xml 살펴보면 DispatcherServlet이 <url-pattern>/</url-pattern> 있는데
이 의미가 주소가 /가 있으면 DispatcherServlet 거친다는 의미
=> 근데 이 DispatcherServlet은 servlet-context.xml 사용
servlet-context.xml 내용 중에 있는
<context:component-scan base-package="org.zerock.controller" /> 의미
: 어노테이션이 있는 것을 찾아서 spring bean으로 등록해준다
1. 사용자의 request는 front-controller인 DispatcherServlet 통해 처리
(모든 request는 DispatcherServlet 통해 받는다) => Front-Controller 패턴
2. HandlerMapping은 Request 처리 담당하는 컨트롤러 찾기 위해 존재
3. 찾고 나면 HandlerAdapter 이용해서 컨트롤러 동작시킴
4. Controller는 실제 Request처리하는 로직 작성
(이때 View에 전달하는 데이터는 Model 객체에 담아 전달)
Controller는 다양한 타입의 결과 반환하며 이 처리는 ViewResolver을 이용
5. VeiwResolver는 Controller 반환결과를 어떤 View 통해 처리할지 해석
6. View는 응답보내야하는 데이터를 Jsp 등 이용해서 생성
7. 만들어진 응답은 DIspatcherServlet 통해 전송
'코딩 > Spring' 카테고리의 다른 글
코드로 배우는 스프링 웹 프로젝트 Part3 (ch9) (0) | 2023.02.05 |
---|---|
코드로 배우는 스프링 웹 프로젝트 Part3 (ch8) (0) | 2023.02.05 |
코드로 배우는 스프링 웹 프로젝트 Part3 (0) | 2023.02.05 |
코드로 배우는 스프링 웹 프로젝트 Part2 (1) | 2023.01.29 |
코드로 배우는 스프링 웹 프로젝트 Part1 (0) | 2023.01.24 |