티스토리 뷰

1. Spring MVC에 대한 개요

 - Java에서 웹 어플리케이션 개발에 있어서의 framework이다.

 - Model-View-Controller 디자인 패턴에 근거한다.

 - Core Spring Framework의 특징들을 잘 활용할 수 있다 (IoC, DI 같이 배운것을 적용할 수 있다.)

 

* framework란 : 애플리케이션 개발에 바탕이 되는 템플릿과 같은 역할을 하는 클래스들과 인터페이스들의 집합. 프로그램의 전체적인 구조와 흐름을 결정짓는다.

* Design Pattern이란 : 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙혀 이후에 재사용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것.

 

2. Spring MVC Framework

Spring MVC Picture

(1) MVC 디자인 패턴에 대해서

1) Web Browser에서 request가 들어온다.

2)  Spring MVC의 Front Controller를 마주한다

3) 들어온 request를 Controller code에 위임한다. (이 Controller code는 개발자의 business logic을 포함하는 개발자가 직접(내가) 만드는 것이다.)

4) Model을 만들어서 Front Controller에 내가 넘겨준다.

5) Front Controller가 View Template로 Model를 넘긴다. 

(View Template란 html페이지나 jsp페이지같이 data를 받아서 Browser에 response로 넘겨주는 것을 말한다)

 

(2) Spring MVC의 장점

 - Java에서 웹 앱 UI들을 만드는 Spring 방식이다.

 - 재사용가능한 UI component들을 활용 할 수 있다. (Spring JSP custom tag의 형태로)

* web app에서, 헤더와 풋터같은 공통의 page components같은것들이 있을수 있는데, 이러한 UI component를 내 페이지에서 재사용할 수 있다는 것이다. (JSP의 Includes나 Thymeleaf의 Page Layouts and Fragments같이.)

 - 웹 request에 대해 어플리케이션 상태를 관리하는데 도움을 준다(Session tracking이나 application tracking)

 - validation, conversion과 같은 폼 데이터(form data)를 처리할 수 있다.

 - View layer에서의 configuration이 유연하다. (JSP에 제한된것이 아니라, Thymeleaf, Velocity나 FreeMarker같은 view layer를 사용할 수 있다.)

 * 참고 사이트 : docs.spring.io/spring-framework/docs/current/reference/html/web.html

 

Web on Servlet Stack

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more com

docs.spring.io

 

(3) Spring MVC Application의 구성요소

1) UI Component를 보여줄 웹 페이지들

2) Spring bean들의 collection (Controllers, Services, etc...)

3) Spring Configuration(XML, Annotation나 순수 Java코드)

(4) Spring MVC 프로세스 진행과정

모든 request는 Front Controller를 마주하게 된다.

1) DispatcherServlet이라고 불리는 Front Controller

 - Spring Framework의 한 부분
 - Spring Dev Team에 의해 이미 개발 되어 있어 직접 만들 필요 없다.

 - Front Controller가 하는일 : reqeust를 system안의 다른 object나 item에 위임한다.

2) 내가 만들어야 하는 M(Model objects),V(View templates), C(Controller Classes)

① Model 객체 : data를 가지고 있다.

② View templates : 실제적인 JSP페이지나 View 페이지로 실제적으로 데이터를 만든다.

③ Controller Classes : 실제적인 business logic, process logic.

 

(5) Controller

 - 개발자에 의해 생성되는 코드이다.

 - Business logic를 포함한다. (request를 다루고 폼 데이터를 읽는것. 그리고 데이터를 db에 저장하거나 web service로 부터 정보를 회수하거나..) Model에 데이터를 위치시킬수 있다.

 - 일단 데이터를 가지고 사용한다면, 그 데이터를 model에 위치 시킬 수 있고 적절한 view template로 보낸다.

 

(6) Model

 : 데이터를 가지고 있는것. 데이터는 Java 객체나 collection 그 어느것이 될 수 있다.

suitcase나 luggage같이 spring MVC application의 다양한 부분 사이에 데이터를 운송하는것이라 보면된다.

따라서 model data가 실제로 view template로 넘어 갈 것이고, 그것을 displaying data하기 위해 다룰수 있다.

 

(7) View template 

 - Spring MVC는 유연하게 많은 view template를 제공한다.

 - 가장 일반적인 view template는 JSP + JSTL이다.

 - Developer가 페이지를 만들고 데이터를 배치한다.

(JSP페이지에서, controller에서 view template로 넘어온 model데이터를 읽어서 보여줄 수 있다.)

더 많은 정보는 www.luv2code.com/spring-mvc-views를 참고하면 된다.

 

Web on Servlet Stack

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more com

docs.spring.io

3. Spring MVC Configuration

1. Spring MVC Configuration 과정 - part 1 (WEB-INF/web.xml에 configuration 추가)

(1) Spring MVC DispatcherServlet을 configure

 - Spring Dispatcher Servlet이나 Front controller를 위한 entry 설정.

<display-name>spring-mvc-demo</display-name>
	<absolute-ordering />
	<!-- Spring MVC Configs -->

	<!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring-mvc-demo-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

(2) Spring MVC Dispatcher Servlet에 URL mapping 설정

	<!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

* 여기서 중요한것은 servlet 이름과 매칭하는 servlet이름이 동일해야 한다.

 

2. Spring MVC Configuration 과정 - part 2 (WEB-INF/spring-mvc-demo-servlet.xml에 configuration 추가)

(3) Spring component scanning support 추가(이때까지 설정한것과 동일)

<!-- Step 3: Add support for component scanning -->
	<context:component-scan base-package="com.luv2code.springdemo" />

* @Component를 스캔해서 사용할수 있게 spring context에 넣어주는 기능

 

(4) Conversion, Formatting, Validation을 위한 support추가

	<!-- Step 4: Add support for conversion, formatting and validation support -->
	<mvc:annotation-driven/>

(5) Spring MVC view resolver를 Configure해주기. 

* 페이지를 어떻게 보여주고 어디에 그 페이지들이 위치하는지를 내부적인 재료(resource)인 view resolver를 통해서 prefix(접두사)와 suffix(접미사)를 준다.

-> app이 view 이름을 제공할때, Spring MVC가 자동으로 prefix와 suffix를 이름 앞과 뒤에 달아서 실제로 application을 위해서 view를 제공하는 파일이 어디에 있는지 알려준다. 

	<!-- Step 5: Define Spring MVC view resolver -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/view/" />
		<property name="suffix" value=".jsp" />
	</bean>

 

위에서 볼수 있듯, 만약 show-student-list라는 이름의 view를 return하려고 하면, 자동으로 prefix와 suffix를 앞뒤로 붙혀 /WEB-INF/view/show-student-list.jsp로 자동으로 바꿔준다. 파일이 어디에 저장되어있는지, 그 path로 변환시켜주는것이다.

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday