코딩공부/Java Spring

[spring 기초] MVC 패턴, package구조

integerJI 2020. 5. 16. 19:31

[spring 기초] MVC 패턴, 패키지 구조, 홈페이지가 열리는 과정

 

pox에서 설정을 해주고 web에서 한글 필터를 해주고

 

어떻게 서버가 실행되면 갑자기 페이지가 나오지?

 

그리고 localhost 뒤에 붙어있는 경로는 어떤 것인지 궁금쓰


 - 프로젝트 시작 전 개발환경 세팅

sts 3.9.11 : https://integer-ji.tistory.com/52

oracle 11g : https://integer-ji.tistory.com/55

java 1.8 : https://integer-ji.tistory.com/49

Tomcat 8.5.50 : https://integer-ji.tistory.com/182


프로젝트 구조 살펴보기

 

 

먼저 기본으로 MVC프로젝트를 만들었을 때의 구조입니다.

 

먼저 소개를 하자면

 

 

src/main/java : 저희가 직접 개발하는 java의 경로입니다.

controller과 service 등 java클래스와 패키지를 관리합니다.

 

src/main/resources : 서버가 실행될 때의 경로를 지정해줍니다. 

 

test는 말 그대로 테스트할 때만 사용됩니다.

 

src/main/webapp/WEB-INF/spring/servlet-context.xml Spring 설정 파일의 경로입니다.

 

src/main/webapp/WEB-INF/views JSP를 관리합니다.

 

pom.xml : maven을 설정해줍니다.

* maven이란 자바 프로젝트의 빌드(build)를 자동화해주는 빌드 툴(build tool)입니다.

maven 출처: https://jeong-pro.tistory.com/168 [기본기를 쌓는 정아 맞추어 코딩 블로그]

참고 : https://doublesprogramming.tistory.com/84

https://freestrokes.tistory.com/78

 

이제 MVC 패턴에 대해 알아보도록 하겠습니다.

 

위의 경로는 미리 알면 좋지만 저는 직접 해보며 알아가는 주의라 

 

저희가 로컬 홈 화면을 띄우는 과정을 보겠습니다.

 

MVC 패턴은 Model, View, Controller의 약자입니다.

하나의 프로젝트를 구성할 때 필요한 구성 요소들입니다.

 

영어문장 그대로 Controller을 이용하여 조작을 하고 Model에서 데이터를 가져와 View를 보여줍니다.

 

쉽게 말하면 Controller에서 화면을 띄우라고 조작을 하고 조작할 때 필요한 데이터가 있으면

 

데이터베이스에서 원하는 데이터를 가져오게 Model이 일을 하고

 

최종으로는 View를 띄워줍니다.

 

MVC를 나눈 이유?

 

MVC를 굳이 나눈 이유는

 

backend와 frontend의 동시 작업이라고 생각합니다. (효율성 업)

 

참고 : https://m.blog.naver.com/jhc9639/220967034588

 

Home Controller, Home.jsp을 불러오기 위한 작동 과정

 

 

기본적으로 생성되어있는 Controller입니다.

 

HomeController이란 class가 실행이 되면

 

20번째 줄에서 Logger을 띄우고

 

주소 뒤에 /이 오면 (Get방식으로)

 

"Welcome home! The client locale is {}."를 출력해준 뒤

 

Date를 가져옵니다. ( 시간 )

 

그리고 return "home"를 해줍니다.

 

여기서 Home는 View/home.jsp입니다.

 

View로 이동해 볼게요

 

 

home.jsp를 보면 저희가 서버를 실행하고 보이는 화면인 것을 알 수 있습니다.

 

Controller에서 요청을 보내면 해당 뷰를 띄우는데

 

여기서 보이는 다른점은 $(serverTime}입니다.

 

serverTime은 Controller에서 보내주는 시간입니다.

 

 

formattedDate는 serverTime란 이름으로 value객체를 추가합니다.

 

3번째 줄 import를 보면 java.util을 가져온 것을 볼 수 있습니다.

 

이렇게 server를 실행하게 되면

 

Controller에서 "/"가 들어오면 serverTime와 함께 home를 return해라입니다.

 

이제 서버를 실행해보면

[/WEB-INF/spring/root-context.xml]와 [/WEB-INF/spring/appServlet/servlet-context.xml]

 

그리고 Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}"

 

맨 마지막은 로그가 나오는 모습을 볼 수 있습니다.

 

큰 틀을 보면 MVC이지만 root-context도 참고하고 servlet-context도 참고하고

 

많은 파일을 왔다 갔다 하며 실행이 됩니다. 

 

이 부분에 대해서는 직접 실습하면서 서술하겠습니다.

 

참고 : https://doublesprogramming.tistory.com/84 

 

---