이번에 학원에서 배운 Spring MVC패턴에 대해 공부해보기로 한다.


우선 MVC 패턴이란???

 

Model, View, Controller를 분리한 디자인 패턴이다. (_개발자가 직접 구현해야 한다!_)

스프링 MVC는 모델 2 방식의 구조이면 웹 개발 시 대부분 MVC구조를 응용한 방식으로 사용한다.

디자이너와 개발자의 작업분리가 되어 작업하기가 편하다.

 

 

  • Model
    • 데이터를 처리하는 부분이다.
    • Java Beans(자바로 작성된 컴포넌트 즉 클래스를 일반적으로 말한다. jsp페이지의 디자인 부분과 로직 부분을 나누어 코드를 줄이고 프로그램의 재사용성을 증가시킨다. (((자바빈에 대해서는 더 공부가 필요하지만 일단은 넘어가는 걸로...)))
  • View
    • JSP HTML 화면을 담당한다. 
  • Controller
    • View와 Model사이의 인터페이스이다.
    • 입력 및 요청을 수신하여 Model에 담아 View에 전달한다
    • Controller>Service>Dao>DB
    •  

- 요약 - 클라이언트가 컨트롤러에게 요청

           컨트롤러가 모델에게 요청

           모델이 컨트롤러에게 응답

           컨트롤러가 응답받고 뷰에게 보냄

           뷰가 화면으로 보냄

 


이번에는 키와 몸무게를 내보내는 문제를 아주 간단하게 MVC패턴으로 해보자.

코드 공부라기보다는 주요 개념들을 위주로 공부하겠다.


 

우선 Maven Project

메이븐은 오픈소스 빌드 툴이다.

컴파일과 동시에 빌드를 수행할 수 있으며 테스트를 병행, 서버 측 디플로이 자원을 관리할 수 있는 환경을 제공한다.

프로젝트의 종속 라이브러리들과 그 라이브러리에 영향을 미치는 Deppendency 자원까지 관리할 수 있다.

jar 파일을 다운받아 프로젝트에 추가할 경우 연관된 다른 종속 라이브러리 또한 다 찾아야 하는 불편함을 Maven을 통해 의존성 관리를 할 수 있다.

메이븐을 사용하기 위해 메이븐을 설치하고 POM(Project Object Model)을 작성한 후 각종 빌드 스크립트 혹은 명령어를 배워야 한다.

 

 

src

main

java

자바 소스(.class)파일 두는 곳

resources

자바 관련 리소스 파일 두는 곳

webapp

html, jsp 등 web관편 파일 둠


web.xml

 

web application의 설정을 위한 deployment descriptor (배포서술자)

 

Deploy 할 때 Servlet의 정보를 설정해준다

브라우저가 Java Servlet에 접근하기 위해서는 WAS(톰켓)에 필요한 정보를 알려줘야 해당 Servlet을 호출할 수 있다.

배포할 Servlet이 무엇인지 해당 Servlet이 어떤 URL에 매핑되는지...

 

 

위의 서블릿 name과 서블릿 맵핑의 이름은 같아야 한다.

servlet-class는 개발자에 의해 작성된 클래스 이름과 같아야 한다. Ex. (패키지 이름.)(서블릿 클래스 이름)

 

url-pattern은 클라이언트의 요청 URL에서 앱 이름 뒤에 오는 부분이다.

 

한마디로 web.xml은 배포서술자 URL이 서블릿에 매핑되는 방법, URL 등의 정보 확인, 웹서버가 이를 사용하여 웹 요청을 처리하는 방법을 기술한다. 매핑한다.


pom.xml

빌드 파일이다.

메이븐은 pom.xml 빌드 파일을 사용하여 빌드 정보를 기술한다.

Project Object Model의 약자로 프로젝트의 다양한 정보를 처리하기 위한 객체 모델이다.


servlet.xml

처음에 web.xml이 돌아가면서 dispatcher-servlet을 실행시키게 되면 servelt.xml에 있는 내용이 적용된다

요청할 컨트롤러 파일이 존재하는 패키지를(com.yadoc) 탐색하도록 하여 서블릿이 요청을

전달받을 수 있도록 기본 설정한다.

 





 

'Spring Framework > spring공부' 카테고리의 다른 글

Spring MVC패턴2  (1) 2020.06.16

+ Recent posts