Spring - 스프링 MVC Hello World
목록  
제 목 스프링 MVC Hello World
작성자 박세청 작성일 2014/01/02 11:07


스프링 MVC Hello World

 

스프링 MVC를 이용한 개발과정을 단순하게 설명하며 아래와 같다.

 

☞클라이언트의 요청을 받을 DispatcherServlet을 web.xml 파일에 설정

 

<servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
   <servlet-name>dispatcher</servlet-name>
   <url-pattern>*.do</url-pattern>
  </servlet-mapping>

/WEB-INF/web.xml파일에 추가한다.

윗코드에서 *.do로 들어오는 클라이언트의 요청를 DispatcherServlet이 처리하도록 설정 하였다.

DispatcherServlet은 WEB-INF/ 디렉터리에 위치한 [서블릿이름]-servlet.xml파일을 스프링 설정파일로 사용한다.

예를 들어, 위코드의 경우 'dispatcherservlet-servlet.xml' 파일을 설정파일로 사용하게 된다.

이파일에서 MVC 구성요소인 Controller, ViewResolver, View등의 빈을 설정하게 된다.

클라이언트의 요청을 처리할 컨트롤러를 작성

@Controller
public class Helloworldcontroller {
 @RequestMapping("/hello.do")
 public ModelAndView hello(){
  ModelAndView mav=new ModelAndView();
  mav.setViewName("hello");
 
 mav.addObject("greeting",getGreeting());  //라인 15
  return mav;
 }
 private String getGreeting(){
  int hour=Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
  if(hour>=6&&hour<=10){
   return "좋은 아침입니다.";
  }else if(hour>=12 &&hour<=15){
   return "점심 식사는 하셨나요?";
  }else if(hour>=18&&hour<=22){
   return "좋은 밤 되세요!!";
  }
  return "안녕하세요?";
 }
}

@RequestMapping어노테이션은값으로 지정한 요청경로를 처리할 메서드를 설정한다.

윗 예제의 경우"/hello.do"를 지정했는데, 이경우, http://host:port[/컨텍스트 경로]/hello.do요청을 HelloController클래스의

hello()메서드가 처리하게 된다.

hello()메서드안에서ModelAndView 를 생성하고 있는데, ModelAndView 는 컨트롤러의 처리 결과를 보여줄 뷰와 뷰에서 출력할 모델을 지정할 때 사용된다.

윗 경우 사용할 뷰 이름으로"hello"를 지정하였고(라인 15), 모델에 "greeting"이라는 이름으로 String 타입의 값을 추가하였다.

ViewResolver를 설정. ViewResolver는 컨트롤러가 전달한 값을 이용해서 응답 화면을 생성할 뷰를 결정한다.

public ModelAndView hello(){
  ModelAndView mav=new ModelAndView();
  mav.setViewName("hello");
 
 mav.addObject("greeting",getGreeting());  //라인 15
  return mav;
 }

여기서  mav.setViewName() 메서드를 이용하여 컨트롤러의 처리결과를 보여줄 뷰이름을 "hello"로 지정하였는데, DispatcherServlet은 이뷰 이름과 매칭되는 뷰 구현체를 찾기 위해 ViewResolver를 사용한다. 스프링 MVC는 JSP, Velocity, FreeMarket등의 뷰구현 기술과의 연동을 지원하는데 , JSP를 뷰기술로 구현할 경우 dispatcher-servlet.xml에 아래와 같이 추가하면 된다.

<bean id="viewResolver"
 class="org.Springframework.web.servlet.view.InternalResourceViewResolver">
 <property name="prefix" value="/WEB-INF/view"/>
 <property name="suffix" value=".jsp"/>
 </bean>

 위 코드에서 prefix프로퍼티와 suffix프로퍼티의 값으로 가각"/WEB-INF/view/"와".jsp"를 설정하였는데,

이는 ViewResolver가 "/WEB-INF/view/뷰이름.jsp"를 뷰 jsp로 사용한다는것을 의미한다.

즉 앞의 예에서 Helloworldcontroller는 뷰이름 으로 "hello"를 리턴하므로, 실제로 사용되는 뷰 파일은

"/WEB-INF/view/hello.jsp"파일이 된다.

JSP나 Velocity등을 이용하여 뷰 영역의 코드를 작성.

WebContent/WEB-INF/view/hello.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>인사</title>
</head>
<body>
인사말: <strong>${greeting}</strong>
</body>
</html>

[모델과 뷰코드의 연결]

-컨트롤러

@RequestMapping("/hello.do")

public ModelAndViewhello(){

ModelAndView mav=new ModelAndView();

mav.setViewName("hello");

mav.addObject("greeting", getGreeting());

return mav;

}

-뷰JSP

<body>

인사말:<strong>${greeting}</strong>

</body>

실행

 

위와 같은 결과가 나왔다면 성공이다.!!

 

실행 흐름 정리

 

 

출처: 웹개발자를 위한 스프링3.0프로그래밍





이전글 maven + spring + mybatis 설정
다음글 AOP(Aspect Oriented Programming)

목록