본문 바로가기

FrameWork/Spring 3.0

[Spring 3.0] CH06.MVC Hello World

이번엔 정말 간단한 MVC 패턴의 Hello World 를 작성해 보도록 하자.
간단한 MVC 패턴이라고 말은 하지만.. 음..... 그닥 MVC 패턴 같지 않은 MVC 패턴이므로, 기본 개념을 숙지하는셈 치자. ^^;

총 MVC 과정 단계를 단순하게 설명하면 5단계로 나눌수 있다.

1. 클라이언트의 요청을 받을 DispatcherServlet 을 web.xml 파일에 설정한다.
2. 클라이언트의 요청을 처리할 컨트롤러를 작성한다.
3. ViewResolver 를 설정한다. (컨트롤러가 전달한 값을 이용해서 응답화면을 생성할 뷰를 결정한다)
4. JSP 나 Velocity 등을 이용하여 뷰 영역의 코드를 작성한다.
5. 실행!!!! ^-^

1. DispatcherServlet 설정 및 스프링 컨텍스트를 설정한다.

*.do 로 들어오는 클라이언트의 요청을 DispatcherServlet 이 처리하도록 설정

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

#web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 id="WebApp_ID" version="2.5">
 <display-name>HelloSpring3.0</display-name>
 
 <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-app>


dispatcher-servlet.xml 파일을 설정파일로 사용하게 된다.



2. 컨트롤러 구현 및 설정 추가

# dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"    xmlns:p="http://www.springframework.org/schema/p"
 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-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 
 <!--  어노테이션 사용 설정 -->
 <context:annotation-config />
 
 <!-- 컨트롤러 객체 설정 -->
 <bean id="helloController" class="controller.HelloController" />
 
 <!-- 3. 컨트롤러 처리결과를 보여줄 View 구현체 -->
 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
  <!-- /WEB-INF/view/뷰이름.jsp 로 들어오도록 prefix 및 suffix 설정 -->
  <property name="prefix"><value>/WEB-INF/view/</value></property>
  <property name="suffix"><value>.jsp</value></property>
 </bean>

 </beans>

web.xml 에서 3. 컨트롤러 처리 결과를 보여줄 View 구현체를 설정합니다 (3번)

#HelloController.java

package controller;

import java.util.Calendar;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller //해당클래스가 MVC 컨트롤러를 구현한 클래스 라는 것을 지정
public class HelloController {
 
 @RequestMapping("/hello.do") //값으로 지정한 요청경로를 처리할 메서드 설정
 // URL :  아이피:포트/컨텍스트경로/hello.do 요청
 public ModelAndView hello() {
  ModelAndView mav = new ModelAndView();
  mav.setViewName("hello");
  mav.addObject("greeting", getGreeting());
  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 "안녕하세요";
 }
}


4. View 코드 구현

#hello.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>인사</title>
</head>
<body>
인사말 : <strong>${greeting}</strong>
</body>
</html>

저 greeting 은 HelloController.java 에서 ModelAndView  를 통해서 넘겨져 온 값이다.





5. 마지막으로 실행 ㄱㄱㄱㄱ



인사말은 getGreeting() 에서 시간에 따라 나오는 메시지를 다르게 해주었기 때문에,
해당 서버 시간에 따라서 메시지가 바뀌게 된답니다~! ^-^

위의 내용을 그대로 붙이시면 프로그램이 제대로 돌아가지만...
그래도 귀찮다 하시는분들은.. war  파일 첨부해 드리오니, 한번이라도 돌려보시기 바랍니다~! ^-^


용자님께서는 Test Go ! Go! Go! ^-^