이번엔 정말 간단한 MVC 패턴의 Hello World 를 작성해 보도록 하자.
간단한 MVC 패턴이라고 말은 하지만.. 음..... 그닥 MVC 패턴 같지 않은 MVC 패턴이므로, 기본 개념을 숙지하는셈 치자. ^^;
총 MVC 과정 단계를 단순하게 설명하면 5단계로 나눌수 있다.
1. DispatcherServlet 설정 및 스프링 컨텍스트를 설정한다.
*.do 로 들어오는 클라이언트의 요청을 DispatcherServlet 이 처리하도록 설정
DispatcherServlet 은 WEB-INF/ 디렉터리에 위치한 [서블릿이름]-servlet.xml 파일을 스프링 설정 파일로 사용한다.
#web.xml
dispatcher-servlet.xml 파일을 설정파일로 사용하게 된다.
2. 컨트롤러 구현 및 설정 추가
# dispatcher-servlet.xml
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
저 greeting 은 HelloController.java 에서 ModelAndView 를 통해서 넘겨져 온 값이다.
5. 마지막으로 실행 ㄱㄱㄱㄱ
인사말은 getGreeting() 에서 시간에 따라 나오는 메시지를 다르게 해주었기 때문에,
해당 서버 시간에 따라서 메시지가 바뀌게 된답니다~! ^-^
위의 내용을 그대로 붙이시면 프로그램이 제대로 돌아가지만...
그래도 귀찮다 하시는분들은.. war 파일 첨부해 드리오니, 한번이라도 돌려보시기 바랍니다~! ^-^
용자님께서는 Test Go ! Go! Go! ^-^
간단한 MVC 패턴이라고 말은 하지만.. 음..... 그닥 MVC 패턴 같지 않은 MVC 패턴이므로, 기본 개념을 숙지하는셈 치자. ^^;
총 MVC 과정 단계를 단순하게 설명하면 5단계로 나눌수 있다.
1. 클라이언트의 요청을 받을 DispatcherServlet 을 web.xml 파일에 설정한다.
2. 클라이언트의 요청을 처리할 컨트롤러를 작성한다.
3. ViewResolver 를 설정한다. (컨트롤러가 전달한 값을 이용해서 응답화면을 생성할 뷰를 결정한다)
4. JSP 나 Velocity 등을 이용하여 뷰 영역의 코드를 작성한다.
5. 실행!!!! ^-^
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>
<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>
<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>
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! ^-^
'FrameWork > Spring 3.0' 카테고리의 다른 글
[Spring 3.0] CH06. 컨트롤러 메서드 HTTP 전송방식(method) 한정 (4) | 2010.11.10 |
---|---|
[Spring 3.0] CH06. 캐릭터 인코딩 처리를 위한 필터 설정 (0) | 2010.11.10 |
[Spring 3.0] CH04-2.어노테이션 기반 빈 객체 스캔 (1) | 2010.10.27 |
[Spring 3.0] CH04-1. 어노테이션 기반 설정 (1) | 2010.10.27 |
[Spring 3.0] DI & AOP 개념 (0) | 2010.10.27 |