티스토리 뷰
이전글에서 스프링3.0 에 대한 간략한 소개와 요청을 처리하는 수명주기(life cycle), 아키텍쳐 다이어그램 등을 살펴보았다.
이제는 간단한 Hello world 어플리케이션을 만들어 보도록 한다.
hello world 데모 어플리케이션을 만들기 위해 Eclipse IDE를 사용할 것이다.
필요한것들
첫 예제인 hello world 어플리케이션을 만들기위해 다음과 같은 것들이 필요하다.
1. JDK 1.5 이상
2. Tomcat 5.x 이상 또는 기타 다른 컨테이너 (GlassFish, JBoss, Websphere, Weblogic 등)
3. eclipse 3.2.x 이상
4. spring 3.0 MVC jar 파일들. 아래 목록이 이번 샘플 어플리케이션을 만들기 위해 필요한 JAR 파일 들이다
- commons-logging-1.0.4.jar
- jstl-1.2.jar
- org.springframework.asm-3.0.1.RELEASE-A.jar
- org.springframework.beans-3.0.1.RELEASE-A.jar
- org.springframework.context-3.0.1.RELEASE-A.jar
- org.springframework.core-3.0.1.RELEASE-A.jar
- org.springframework.expression-3.0.1.RELEASE-A.jar
- org.springframework.web.servlet-3.0.1.RELEASE-A.jar
- org.springframework.web-3.0.1.RELEASE-A.jar
Spring MVC 의 버전에 따라 위의 jar파일들의 버전이 달라질 수도 있음을 참고할것.
목표
우리의 목적은 스프링 3.0 버전을 이용하여 기본적인 어플리케이션을 만들어보는 것이다.
첫 페이지는 "Say Hello" 라는 링크가 있는 인덱스 페이지가 있을 것이다. 유저가 그 링크를 클릭하게 되면, 새로운 hello 라는 페이지로 리다이렉팅이 되고, 그 페이지에서는 "Hello world!, Spring 3.0!" 이라는 문구를 보여줄 것이다.
시작하기
spring 3.0 기반의 기본적인 어플리케이션 작성을 시작해 보겠다.
이클립스를 열고 File -> New -> Project 를 선택하고 Dynamic Web Project를 선택한다.
선택한 후 Next 버튼을 클릭한다.
프로젝트의 이름을 입력한다. 예를 들면 Spring3MVC. 그다음 Target Runtime을 지정해준다. ( 예) Apache Tomcat v6.0 ).
이클립스 내에서 프로젝트를 구동하기 위해 필요한 것이다. 선택을 했으면 Finish를 클릭한다.
프로젝트의 생성이 완료되면, 다음과 같은 화면을 볼 수 있다.
이제 다운로드 받았던 모든 JAR 파일 들을 WebContent > WEB-INF > lib 폴더에 복사해 놓는다.
만약 폴더가 없다면 만들어서 복사한다.
컨트롤러 클래스(The Spring Controller Class)
이제 요청(request)를 처리하고 "Hello World" 라는 문구를 출력해줄 Controller 클래스를 만들 것이다.
이를 위해 소스(src) 폴더에 net.viralpatel.spring3.controller 라는 패키지를 만들어준다. (이건 알아서 변경해도 상관없음)
이 패키지는 컨트롤러 파일들만 모아놓을 곳이다.
그리고 그 패키지 안에 HelloWorldController 클래스를 만들어주고 아래 내용을 입력한다.
File: net.viralpatel.spring3.controller.HelloWorldController
- package net.viralpatel.spring3.controller;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
- @Controllerpublic class HelloWorldController {
- @RequestMapping("/hello")
- public ModelAndView helloWorld() {
- String message = "Hello World, Spring 3.0!";
- return new ModelAndView("hello", "message", message);
- }
- }
우리가 @Controller 와 @RequestMapping("/hello") 라는 어노테이션을 사용했다는 것을 기억하라.
스프링이 우리의 패키지들을 스캔할 때, request요청을 처리함에 있어 이 클래스를 Controller 빈으로서 처리할 것으로 인식 할 것이다.
그리고 @RequestMapping("/hello") 라는 어노테이션은 스프링에게 URL path에서 "/hello" 로 시작하는 모든 요청에 대해
이 Controller 가 처리할 것이라고 전할 것이다.
이는 /hello/* 와 /hello.html 등을 모두 포함한다.
helloWorld() 메소드는 ModelAndView 객체를 리턴한다. ModelAndView 객체는 "hello" 라는 이름을 가진 뷰를 찾도록 할 것이고, 데이터 모델들은 다시 브라우저로 전달되어 JSP에서도 데이터에 접근할 수 있도록 해준다. 뷰의 논리적인 이름은 "/WEB-INF/jsp/hello.jsp" 가 될 것이다.
ModelAndView 객체에서 "hello" 라고 리턴된 뷰의 이름이 어떻게 "/WEB-INF/jsp/hello.jsp"로 해석될 수 있는가에 대해서는 잠시후에 다뤄보도록 한다.
ModelAndView 객체는 또 "Hello World, Spring3.0 !" 라는 내용을 "message"라는 키를 가지고 있는 메세지를 포함한다.
이것은 우리가 화면에 뿌려줄 데이터이다. 일반적으로 화면에 뿌려 줄 value object(VO) 가 될 것이다.
이번 예에서는 간단한 스트링 문자만 가지고 있는 객체이다.
화면 : JSP 파일 만들기
hello world 메세지를 화면에 보여주기위해서 JSP파일을 만들어 주어야 한다. JSP파일은 /WEB-INF/jsp 폴더 안에다가 만든다.
/WEB-INF/jsp 에 hello.jsp 라는 파일을 만들고, 아래 내용을 넣어준다.
File: WEB-INF/jsp/hello.jsp
- <html>
- <head>
- <title>Spring 3.0 MVC Series: Hello World - ViralPatel.net</title>
- </head>
- <body>
- ${message}
- </body>
- </html>
위의 JSP 는 ${message} 라는 구문을 이용하여 단순히 화면에 메세지를 보여주는 페이지 이다.
"message" 라는 이름은 우리가 컨트롤러에서 ModelAndView 객체에 메세지와 함게 세팅해준 이름인 것을 기억하길 바란다.
다음으로 우리 어플리케션의 입구가 될 index.jsp 파일도 필요하다. WebContent 폴더 아래 index.jsp라는 파일을 만들고
아래의 내용을 입력하도록 한다.
File: WebContent/index.jsp
- <html>
- <head>
- <title>Spring 3.0 MVC Series: Index - ViralPatel.net</title>
- </head>
- <body>
- <a href="hello.html">Say Hello</a>
- </body>
- </html>
WEB.xml 파일에 Spring MVC 매핑 시키기
앞의 글에서도 이야기 했듯이, Spring MVC 어플리케이션의 첫 입구가 될 서블릿은 DispatcherServlet 이며
WEB.xml 파일에 세팅을 해줌으로서 사용할 수 있다.
WEB.xml 파일을 열고 아래 내용을 추가로 넣어서 수정해 준다.
File: WEB-INF/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>Spring3MVC</display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <servlet>
- <servlet-name>spring</servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spring</servlet-name>
- <url-pattern>*.html</url-pattern>
- </servlet-mapping>
- </web-app>
web.xml 에 설정된 위 코드를 보면 *.html 의 패턴을 가진 모든 요청에 대해서 DispatcherServlet 으로 매핑 될 것이다.
index.jsp 파일을 welcome-file 로 지정 한 것도 같이 기억해 두도록 한다.
여기서 우리가 한가지 알아두어야 할 점은, web.xml파일에서 서블릿의 이름을 나타내주는 <servlet-name>태그이다.
DispatcherServlet 이 초기화가 되고나면, 웹어플리케이션의 WEB-INF 폴더에서 [서블릿이름]-servlet.xml 의 이름을 가진
파일을 찾을 것이다.
이번 예에서는 spring-servlet.xml 이란 이름을 가진 파일을 찾게 될 것이다.
스프링 설정 파일
WEB-INF 폴더에 spring-servlet.xml 이라는 파일을 만들고, 아래 내용을 입력한다.
File: WEB-INF/spring-servlet.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- 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:component-scan base-package="net.viralpatel.spring3.controller" />
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.UrlBasedViewResolver">
- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
- <property name="prefix" value="/WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- </bean>
- </beans>
위의 xml 설정파일에서, <context:component-scan>이라는 태그를 지정해주었다.
이것은 net.viralpatel.spring3.controller 패키지 및 모든 하위 패키지에 있는 컴포넌트 들을 Spring 구동시 불러 올 것이다.
이때 HelloWorldController 클래스도 불러올 것이다.
또한 viewResolver 빈을 설정해 주었는데, 이것은 뷰를 만들 때, prefix 인 /WEB-INF/jsp 와 suffix 인 .jsp 를 ModelAndView 에서 설정한 view 의 이름과 조합하여 해석 할 것이다.
우리가 HelloWorldController 클래스에서 ModelAndView 객체를 리턴할 때 'hello" 라는 이름을 사용했기 때문에,
이것은 "/WEB-INF/jsp/hello.jsp" 라는 경로로 만들어져 해석된다.
준비는 끝!
빨리 결과를 보고 싶을 것이다. 이클립스에 톰캣 설정을 한다.
Window > ShowView > Server 를 클릭하여 창을 띄운다음,
마우스 오른쪽 클릭 > new > server 를 클릭하고 나머지 설정을 추가해서 서버를 등록한다.
프로젝트를 구동하기위해 프로젝트익스프로러에서 프로젝트 이름에 마우스 오른쪽 클릭 > Run as > Run on Server (단축키 : Alt+Shift+X, R)
을 클릭한다.
예제를 연동하다가 오류가 발생
해당 오류는 tomcat 6.0에서는 jstl lib를 넣어줘야한다.
이 글은 최자님의 글을 포스팅 하였습니다.
copyright by . http://chooija.com
'Framework > Spring' 카테고리의 다른 글
| [Spring & ibatis] 수업 3일 (0) | 2013.04.24 |
|---|---|
| [Spring & ibatis] 수업 2일 (0) | 2013.04.23 |
| [Spring & ibatis] 수업 1일 (0) | 2013.04.22 |
| [Spring]Spring3.0 MVC에서 폼(Form) 다루기 (0) | 2012.10.08 |
| [Spring]Spring3 MVC Framework 소개 (0) | 2012.10.08 |
