SlideShare a Scribd company logo
1 of 22
Spring MVC



         KSA-in Project                AUG 21st 2012
         Task #1 Powerpoint Template   Jungsoo Lee
00
 Contents




            01. Web Application Framework 개요
            02. Spring MVC 구조
            03. 간단한 구현 예제
Web Framework 개요
01
     Web Application Framework




        Web Application Framework란?

           Dynamic한 Website, Web application, Web service등을 구현하기 위한 Software Framework




          Static과 Dynamic                                      Library와 Framework의
             Webpage?                                                    차이점?
01
     Web Application Framework


       동적인 WebPage를 만들기 위한 노력

          - 초창기의 CGI 방식
01
     Web 개발방식의 진화


      동적인 WebPage를 만들기 위한 노력

      Model 1 JSP



                    1 request



                    4 response     JSP

          Browser
                                     2

                                            3   Data
                                 JavaBean
01
     Web 개발방식의 진화


     동적인 WebPage를 만들기 위한 노력

      Model 2 MVC



                       request
                                        Controller


         Browser


                    response
                                 View                Model   Data
01
     Push 방식과 Pull 방식




       Push 방식
        •       Controller에서 데이터를 처리하고 결과값을 View 영역으로 “Push” 함
        •       Struts, Django, Ruby on Rails, Spring MVC 등



        Pull 방식
            •   View에서 필요한 데이터들을 각 Controller에서 “Pull” 해 옴
            •   Play, Lift, Tapestry, Wicket 등
01
     Spring MVC의 특징 정리




     Model 2 방식을 따르는 MVC 구조
     Front Controller Pattern
         •   DispatcherServlet이 Front Controller 역할
     Push-based 방식
     Request-based
Spring MVC Architecture
      Spring MVC의 구조
02
     Spring MVC 구조
02
     Spring MVC 의 request 처리과정



      Request 들어옴                Request 준비과정        Request 처리




                            HandlerExecutionChain
                                    결정




                            HandlerExecutionChain   Request Processing
                                    실행                    종료




                                   에러 발생?              View 그리기




                                   Error 처리
02
     Spring MVC 를 이용한 개발과정




     1. DispatcherServlet 을 Web.xml에 설정
     2. 요청 URL 과 Controller 갂의 Mapping방식을 결정
     3. Controller의 처리 결과를 어떤 View로 보여줄지를 결정하는 ViewResolver 설정
     4. Controller 작성
     5. View 영역 코드 작성
기초적인 Spring MVC 예제
03
     DispatcherServlet 설정 추가

 Web.xml에 다음 설정 추가
 <?xml version="1.0" ?>


 <web-app version="2.4"
     xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
                    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     <servlet>
       <servlet-name>example</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
     </servlet>


     <servlet-mapping>
       <servlet-name>example</servlet-name>
       <url-pattern>*.do</url-pattern>
     </servlet-mapping>
 </web-app>
03
     DispatcherServlet 설정 추가


 기본적으로 spring 설정 파일은 WEB-INF/DISPATCHERNAME-servlet.xml
 Web.xml에 다음 설정 추가하여 다른 Config 파일 사용 가능
       - 여러 파일 사용 가능
       - 동일한 이름의 빈을 지정할 경우 뒤쪽 설정이 우선


     <servlet>
       <servlet-name>multipleConfig</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>
             /WEB-INF/mvc1.xml,
             /WEB-INF/mvc2.xml
          </param-value>
       </init-param>
       <load-on-startup>3</load-on-startup>
     </servlet>
03
     Mapping 방식 설정



 대표적인 Mapping 방법
 1. BeanNameUrlHandlerMapping
       - 빈의 name 속성을 url 과 비교해서 매핑. ANT 패턴 사용 가능. 디폴트 전략.

 2. ControllerBeanNameUrlHandlerMapping
       - 빈의 아이디 또는 빈 이름을 이용해서 매핑.

 3. SimpleUrlHandlerMapping
       - URL과 컨트롤러 매핑 정보를 각 빈으로 분산하지 않고 SimpleUrlHandelrMapping의 프로퍼티로 관리

 4. ControllerClassNameHandlerMapping
       - 빈의 클래스 이름을 사용하여 매핑

 5. DefaultAnnotationHandlerMapping
       - @requestMapping 이라는 Annotation을 컨트롤러 클래스나 메소드에 직접 부여하고 이를 이용해 매핑하는 전략



 Xml의 경우 id에 들어갈 수 있는 문자열 제약이 있어서 빡치는 경우가 있음
03
     Mapping 설정정보(BeanNameUrlHandlerMapping의 경우)

 <?xml version="1.0" encoding="UTF-8" ?>
 <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd">


   <bean id="beanNameUrlMapping"
      class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />


   <bean name="/hello.do"
      class="net.daum.ts.techReport.report2.springmvc.HelloController" />
   <bean name="/login.do"
      class="net.daum.ts.techReport.report2.springmvc.LoginController" />
   <bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/view/" />
      <property name="suffix" value=".jsp" />
   </bean>
 </beans>
03
     Mapping 의 몇가지 중요한 공통 property


 1. interceptors
       - Handler Mapping 중갂에 사용할 interceptor

 2. defaultHandler
       - 매칭되는 핸들러를 찾지 못할때 사용하는 기본 핸들러

 3. order
       - 다수의 HandlerMapping을 사용할 경우 HandlerMapping 갂의 우선순의




                              인터셉터?

         DispatcherServlet이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참
         조하여 가공할 수 있는 일종의 중갂 필터
         핸들러 실행 체인(HandlerExecutionChain)에 의해 인터셉터들이 순
         차적으로 호출 후 컨트롤러 실행
03
     ViewResolver 설정



 핸들러 매핑이 URL로부터 컨트롤러를 찾아오는 것처럼 뷰 이름으로부터 사용할 뷰 오브젝트를
 결정한다
 1. InternalResourceViewResolver
       - JSP를 사용하여 View을 생성. 디폴트 전략. Prefix나 surfix property를 통해 뷰 이름를 조절 가능

 2. VelocityViewResolver
       - Velocity를 사용하여 View를 출력할때 사용
       - VeloctyConfigurer 설정 필요



 이 외에도 FreeMarker, ResourceBundle, XmlView, BeanName 등 여러가지 ViewResolver
 가 있음여
03
     VelocityViewResolver 설정파일 예제

 <앞에 생략함>
     <bean name="/hello.mul"
       class="net.daum.ts.techReport.report2.springmvc.HelloController" />
     <bean id="velocityConfig"
       class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
       <property name="resourceLoaderPath" value="/view_vm/" />
       <property name="velocityProperties">
          <value>
               input.encoding=UTF-8
               output.encoding=UTF-8
          </value>
       </property>
     </bean>
     <bean id="viewResolver"
       class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
       <property name="contentType" value="text/html; charset=UTF-8" />
       <property name="cache" value="true" />
       <property name="prefix" value="" />
       <property name="suffix" value=".vm" />
     </bean>
 </beans>
03
      Controller 및 View 실제 구현

 Controller에서 요렇게 정보를 넘겨 주면…
      protected ModelAndView handle(HttpServletRequest request,
             HttpServletResponse response, Object command, BindException errors)
             throws Exception {
          LoginCommand loginCommand = (LoginCommand) command;
          ModelAndView mav = new ModelAndView("loginSuccess");
          mav.addObject("loginCommand", loginCommand);
          return mav;
      }



View에서는 요렇게 받아먹음

 JSP의 경우
 로그인 정보: ${loginCommand.id}
 <%
   LoginCommand cmd = (LoginCommand) request.getAttribute("loginCommand");
 %>

 Velocity의 경우
 <body>
 인사말: ${greeting}
 </body>

More Related Content

What's hot

03.[참고]개발환경 교육교재
03.[참고]개발환경 교육교재03.[참고]개발환경 교육교재
03.[참고]개발환경 교육교재Hankyo
 
세미나 Spring mybatis
세미나 Spring mybatis세미나 Spring mybatis
세미나 Spring mybatisSomang Jeong
 
Servlet Architecture
Servlet ArchitectureServlet Architecture
Servlet ArchitectureJU Chae
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 Sungchul Park
 
overview of spring4
overview of spring4overview of spring4
overview of spring4Arawn Park
 
04.모바일 device api_실습교재
04.모바일 device api_실습교재04.모바일 device api_실습교재
04.모바일 device api_실습교재Hankyo
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기Ji Heon Kim
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)DK Lee
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Choonghyun Yang
 
04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)Hankyo
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Kim Hunmin
 
Spring boot 5장 cli
Spring boot 5장 cliSpring boot 5장 cli
Spring boot 5장 cliChoonghyun Yang
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3J B
 
03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법Hankyo
 
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.Hojin Jun
 
03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)Hankyo
 
07.실행환경 교육교재(표준프레임워크 세부 적용기준)
07.실행환경 교육교재(표준프레임워크 세부 적용기준)07.실행환경 교육교재(표준프레임워크 세부 적용기준)
07.실행환경 교육교재(표준프레임워크 세부 적용기준)Hankyo
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
 

What's hot (20)

03.[참고]개발환경 교육교재
03.[참고]개발환경 교육교재03.[참고]개발환경 교육교재
03.[참고]개발환경 교육교재
 
세미나 Spring mybatis
세미나 Spring mybatis세미나 Spring mybatis
세미나 Spring mybatis
 
Servlet Architecture
Servlet ArchitectureServlet Architecture
Servlet Architecture
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
 
overview of spring4
overview of spring4overview of spring4
overview of spring4
 
04.모바일 device api_실습교재
04.모바일 device api_실습교재04.모바일 device api_실습교재
04.모바일 device api_실습교재
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)
 
04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까?
 
Spring boot 5장 cli
Spring boot 5장 cliSpring boot 5장 cli
Spring boot 5장 cli
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3
 
03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법03.[참고]표준프레임워크기반 개발방법
03.[참고]표준프레임워크기반 개발방법
 
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.
 
03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)03.모바일 실습교재(모바일 공통컴포넌트 실습)
03.모바일 실습교재(모바일 공통컴포넌트 실습)
 
07.실행환경 교육교재(표준프레임워크 세부 적용기준)
07.실행환경 교육교재(표준프레임워크 세부 적용기준)07.실행환경 교육교재(표준프레임워크 세부 적용기준)
07.실행환경 교육교재(표준프레임워크 세부 적용기준)
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 

Viewers also liked

어플리케이션 및 웹 개발
어플리케이션 및 웹 개발어플리케이션 및 웹 개발
어플리케이션 및 웹 개발Leonardo Taehwan Kim
 
스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 라한사 아
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Yeon Soo Kim
 
OAF Developer Guide 13.1.3
OAF Developer Guide 13.1.3OAF Developer Guide 13.1.3
OAF Developer Guide 13.1.3crwanare
 
The hidden gems of Spring Security
The hidden gems of Spring SecurityThe hidden gems of Spring Security
The hidden gems of Spring SecurityMassimiliano Dessì
 
Spring framework 4.x
Spring framework 4.xSpring framework 4.x
Spring framework 4.xArawn Park
 
Best Practices for Large-Scale Web Sites
Best Practices for Large-Scale Web SitesBest Practices for Large-Scale Web Sites
Best Practices for Large-Scale Web SitesCraig Dickson
 
스프링공부1
스프링공부1스프링공부1
스프링공부1NaKaNaRa
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용Sungchul Park
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVCArawn Park
 
[Spring Camp 2013] Java Configuration 없인 못살아!
[Spring Camp 2013] Java Configuration 없인 못살아![Spring Camp 2013] Java Configuration 없인 못살아!
[Spring Camp 2013] Java Configuration 없인 못살아!Arawn Park
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013beom kyun choi
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동Sungchul Park
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsArawn Park
 
JavaScript 2014 프론트엔드 기술 리뷰
JavaScript 2014 프론트엔드 기술 리뷰JavaScript 2014 프론트엔드 기술 리뷰
JavaScript 2014 프론트엔드 기술 리뷰Kenu, GwangNam Heo
 
안드로이드 어플 개발 전략 10가지 1부
안드로이드 어플 개발 전략 10가지 1부안드로이드 어플 개발 전략 10가지 1부
안드로이드 어플 개발 전략 10가지 1부mosaicnet
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJSJae Sung Park
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기Sungchul Park
 

Viewers also liked (20)

어플리케이션 및 웹 개발
어플리케이션 및 웹 개발어플리케이션 및 웹 개발
어플리케이션 및 웹 개발
 
스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
OAF Developer Guide 13.1.3
OAF Developer Guide 13.1.3OAF Developer Guide 13.1.3
OAF Developer Guide 13.1.3
 
The hidden gems of Spring Security
The hidden gems of Spring SecurityThe hidden gems of Spring Security
The hidden gems of Spring Security
 
Oracle application framework (oaf) online training
Oracle application framework (oaf) online trainingOracle application framework (oaf) online training
Oracle application framework (oaf) online training
 
Spring framework 4.x
Spring framework 4.xSpring framework 4.x
Spring framework 4.x
 
Best Practices for Large-Scale Web Sites
Best Practices for Large-Scale Web SitesBest Practices for Large-Scale Web Sites
Best Practices for Large-Scale Web Sites
 
스프링공부1
스프링공부1스프링공부1
스프링공부1
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
 
[Spring Camp 2013] Java Configuration 없인 못살아!
[Spring Camp 2013] Java Configuration 없인 못살아![Spring Camp 2013] Java Configuration 없인 못살아!
[Spring Camp 2013] Java Configuration 없인 못살아!
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
 
Mvc pattern
Mvc patternMvc pattern
Mvc pattern
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trends
 
JavaScript 2014 프론트엔드 기술 리뷰
JavaScript 2014 프론트엔드 기술 리뷰JavaScript 2014 프론트엔드 기술 리뷰
JavaScript 2014 프론트엔드 기술 리뷰
 
안드로이드 어플 개발 전략 10가지 1부
안드로이드 어플 개발 전략 10가지 1부안드로이드 어플 개발 전략 10가지 1부
안드로이드 어플 개발 전략 10가지 1부
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 

Similar to Spring mvc

#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기
[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기
[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기JunGi Kim
 
Backbone 발표
Backbone 발표Backbone 발표
Backbone 발표Gunhee Lee
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례선협 이
 
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리구 봉
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기YoungSu Son
 
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)Sang Don Kim
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulBansook Nam
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Androidtaeinkim6
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015sung yong jung
 
Knock out - 삽질은 그만 #1
Knock out - 삽질은 그만 #1Knock out - 삽질은 그만 #1
Knock out - 삽질은 그만 #1Hyo Da Seo
 
I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages SangHoon Han
 

Similar to Spring mvc (20)

#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
Basic.pptx
Basic.pptxBasic.pptx
Basic.pptx
 
[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기
[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기
[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기
 
okspring3x
okspring3xokspring3x
okspring3x
 
1.스프링프레임워크 개요
1.스프링프레임워크 개요1.스프링프레임워크 개요
1.스프링프레임워크 개요
 
Springmvc
SpringmvcSpringmvc
Springmvc
 
Backbone 발표
Backbone 발표Backbone 발표
Backbone 발표
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
 
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
 
[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기
 
Vue
VueVue
Vue
 
Presentation1
Presentation1Presentation1
Presentation1
 
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Android
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015
 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
Knock out - 삽질은 그만 #1
Knock out - 삽질은 그만 #1Knock out - 삽질은 그만 #1
Knock out - 삽질은 그만 #1
 
I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages
 

Spring mvc

  • 1. Spring MVC KSA-in Project AUG 21st 2012 Task #1 Powerpoint Template Jungsoo Lee
  • 2. 00 Contents 01. Web Application Framework 개요 02. Spring MVC 구조 03. 간단한 구현 예제
  • 4. 01 Web Application Framework Web Application Framework란? Dynamic한 Website, Web application, Web service등을 구현하기 위한 Software Framework Static과 Dynamic Library와 Framework의 Webpage? 차이점?
  • 5. 01 Web Application Framework 동적인 WebPage를 만들기 위한 노력 - 초창기의 CGI 방식
  • 6. 01 Web 개발방식의 진화 동적인 WebPage를 만들기 위한 노력 Model 1 JSP 1 request 4 response JSP Browser 2 3 Data JavaBean
  • 7. 01 Web 개발방식의 진화 동적인 WebPage를 만들기 위한 노력 Model 2 MVC request Controller Browser response View Model Data
  • 8. 01 Push 방식과 Pull 방식 Push 방식 • Controller에서 데이터를 처리하고 결과값을 View 영역으로 “Push” 함 • Struts, Django, Ruby on Rails, Spring MVC 등 Pull 방식 • View에서 필요한 데이터들을 각 Controller에서 “Pull” 해 옴 • Play, Lift, Tapestry, Wicket 등
  • 9. 01 Spring MVC의 특징 정리 Model 2 방식을 따르는 MVC 구조 Front Controller Pattern • DispatcherServlet이 Front Controller 역할 Push-based 방식 Request-based
  • 10. Spring MVC Architecture Spring MVC의 구조
  • 11. 02 Spring MVC 구조
  • 12. 02 Spring MVC 의 request 처리과정 Request 들어옴 Request 준비과정 Request 처리 HandlerExecutionChain 결정 HandlerExecutionChain Request Processing 실행 종료 에러 발생? View 그리기 Error 처리
  • 13. 02 Spring MVC 를 이용한 개발과정 1. DispatcherServlet 을 Web.xml에 설정 2. 요청 URL 과 Controller 갂의 Mapping방식을 결정 3. Controller의 처리 결과를 어떤 View로 보여줄지를 결정하는 ViewResolver 설정 4. Controller 작성 5. View 영역 코드 작성
  • 15. 03 DispatcherServlet 설정 추가 Web.xml에 다음 설정 추가 <?xml version="1.0" ?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
  • 16. 03 DispatcherServlet 설정 추가 기본적으로 spring 설정 파일은 WEB-INF/DISPATCHERNAME-servlet.xml Web.xml에 다음 설정 추가하여 다른 Config 파일 사용 가능 - 여러 파일 사용 가능 - 동일한 이름의 빈을 지정할 경우 뒤쪽 설정이 우선 <servlet> <servlet-name>multipleConfig</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/mvc1.xml, /WEB-INF/mvc2.xml </param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
  • 17. 03 Mapping 방식 설정 대표적인 Mapping 방법 1. BeanNameUrlHandlerMapping - 빈의 name 속성을 url 과 비교해서 매핑. ANT 패턴 사용 가능. 디폴트 전략. 2. ControllerBeanNameUrlHandlerMapping - 빈의 아이디 또는 빈 이름을 이용해서 매핑. 3. SimpleUrlHandlerMapping - URL과 컨트롤러 매핑 정보를 각 빈으로 분산하지 않고 SimpleUrlHandelrMapping의 프로퍼티로 관리 4. ControllerClassNameHandlerMapping - 빈의 클래스 이름을 사용하여 매핑 5. DefaultAnnotationHandlerMapping - @requestMapping 이라는 Annotation을 컨트롤러 클래스나 메소드에 직접 부여하고 이를 이용해 매핑하는 전략 Xml의 경우 id에 들어갈 수 있는 문자열 제약이 있어서 빡치는 경우가 있음
  • 18. 03 Mapping 설정정보(BeanNameUrlHandlerMapping의 경우) <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <bean name="/hello.do" class="net.daum.ts.techReport.report2.springmvc.HelloController" /> <bean name="/login.do" class="net.daum.ts.techReport.report2.springmvc.LoginController" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/view/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
  • 19. 03 Mapping 의 몇가지 중요한 공통 property 1. interceptors - Handler Mapping 중갂에 사용할 interceptor 2. defaultHandler - 매칭되는 핸들러를 찾지 못할때 사용하는 기본 핸들러 3. order - 다수의 HandlerMapping을 사용할 경우 HandlerMapping 갂의 우선순의 인터셉터? DispatcherServlet이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참 조하여 가공할 수 있는 일종의 중갂 필터 핸들러 실행 체인(HandlerExecutionChain)에 의해 인터셉터들이 순 차적으로 호출 후 컨트롤러 실행
  • 20. 03 ViewResolver 설정 핸들러 매핑이 URL로부터 컨트롤러를 찾아오는 것처럼 뷰 이름으로부터 사용할 뷰 오브젝트를 결정한다 1. InternalResourceViewResolver - JSP를 사용하여 View을 생성. 디폴트 전략. Prefix나 surfix property를 통해 뷰 이름를 조절 가능 2. VelocityViewResolver - Velocity를 사용하여 View를 출력할때 사용 - VeloctyConfigurer 설정 필요 이 외에도 FreeMarker, ResourceBundle, XmlView, BeanName 등 여러가지 ViewResolver 가 있음여
  • 21. 03 VelocityViewResolver 설정파일 예제 <앞에 생략함> <bean name="/hello.mul" class="net.daum.ts.techReport.report2.springmvc.HelloController" /> <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/view_vm/" /> <property name="velocityProperties"> <value> input.encoding=UTF-8 output.encoding=UTF-8 </value> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="contentType" value="text/html; charset=UTF-8" /> <property name="cache" value="true" /> <property name="prefix" value="" /> <property name="suffix" value=".vm" /> </bean> </beans>
  • 22. 03 Controller 및 View 실제 구현 Controller에서 요렇게 정보를 넘겨 주면… protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { LoginCommand loginCommand = (LoginCommand) command; ModelAndView mav = new ModelAndView("loginSuccess"); mav.addObject("loginCommand", loginCommand); return mav; } View에서는 요렇게 받아먹음 JSP의 경우 로그인 정보: ${loginCommand.id} <% LoginCommand cmd = (LoginCommand) request.getAttribute("loginCommand"); %> Velocity의 경우 <body> 인사말: ${greeting} </body>