본문 바로가기
IT/Spring

MVC

by 봉즙 2019. 7. 30.

MVC1과 MVC2의 차이

MVC1은 JSP에 모든것을 담은것

MVC2 3가지로 나눠서 프로그래밍 한 것.

Model, View(JSP), Controller

web에서 요청(Request)은 url, ip, id, pw, 쿠키 등이 온다.

 

DispatcherServlet이 스프링 컨테이너를 생성한다.

 

클라이어트에서 요청이 들어오면 DispatcherServlet(객체)이 HandlerMapping으로 정보를 보내고 요청에 맞는 Cotroller를 찾고 HandlerAdapter에서 Controller안에 있는 해당 함수를 실행 시킨다. Controller, ViewResolver를 통해 View에 정보를 제공하고 클라이언트에 다시 요청을 보낸다.

 

MVC생성시 3번째 들어가는것이 Context 톰캣이 관리하는 프로젝트명 주소에서 default, IoC와는 상관이 없는 Context

※빌드 : 컴파일부터 배포까지

 

MVC에는 기본적으로 설정파일이 3가지 존재

  • pom.xml : 가장 우선시 체크해봐야할 것, 메이븐을 위한 설정 파일, 라이브러리를 관리하는 빌드 툴
  • web.xml : DespatcherServlet객체 생성
	<servlet>
		<servlet-name>appServlet</servlet-name>
        //DispatcherServlet 객체의 appServlet 생성
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
        //DispatcherServlet가 2개의 parameter를 해석하기 위해 IoC컨테이너를 생성한다.
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
        //들어온 모든 요청에 대해서 
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
        //모든 요청을 받는데 해당 url이 context(ex)로 받은 것을 root로 사용해서 appServlet이 받아내겠다는 의미
		<url-pattern>/</url-pattern>
	</servlet-mapping>
//web.xml에서 root-context.xml에 영향
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
  • servelt.xml : root-context.xml(빈 생성하며 추가), servlet-context.xml
	<annotation-driven /> 
    //HandlerMapping과 HandlerAdaptor등 에  대한 객체 생성을 해주는 부분
    
    //viewResolver의 객체 생성
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
    
    //지정된 패키지를 스캔하여 @Controller를 찾는다
    <context:component-scan base-package="edu.bit.ex" />
    
    
    @Compoenet //부모
    @Repository//자손
    @Service//자손
    @Controller//자손
    //자손의 상속 관계 component를 가지고 있는 자손까지 스캔하도록 하는것이
    //component--scan이며 이를 통해 @을 읽어 자동으로 전체 클래스를 메모리에 올려주어 객체를 생성해준다.
    
    
    //2가지 의미 메모리에 올리는 것과 repository에 대해서는 개발자가 선택

 

※ @Controller를 통해 클래스가 IoC컨테이너가 만든 webapplication 메모리에 올라가고 @RequestMapping을 통해  메서드의 URL을 지정해주어 해당 URL호출시 메서드 작동하도록 만들어준다  메서드에서 return값은 views폴더 에서 찾아준다.

 

※html 마크업언어 (<>사용하는 언어)

'IT > Spring' 카테고리의 다른 글

글자 깨질 때  (0) 2019.07.31
한글 처리 web.xml  (0) 2019.07.31
외부 파일 이용  (0) 2019.07.29
Scope  (0) 2019.07.26
컨테이너와 bean의 생명 주기  (0) 2019.07.26

댓글