스프링 2.5.2 설치및 HelloWorld 출력하기

by 조쉬 posted Dec 06, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

스프링 프레임워크 2.5.2 설치및 HelloWorld 출력하기

 

http://cafe.naver.com/javakoreait/22

 

Eclipse Version : 3.4.0

 

Tomcat Version : 5.5

 

Spring Version : 2.5.2 http://www.springsource.com/download/community?project=Spring%20Framework

file은 spring-framework-2.5.2-with-dependencies.zip를 다운로드한다.

 

Jstl Version : 1.1 http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi

file은 jakarta-taglibs-standard-1.1.2.zip를 다운로드한다.

 

이클립스 플러그인 설치

 

SpringIDE 플러그인 - http://springide.org/updatesite

설치시 주의할점은 이클립스 업데이트를 통해 플러그인 설치시 feature선택할때 springide내 Dependancies항목은

제외한다. Mylyn이나 AJDT등은 당장 사용하진 않더라도 나중을 위해 함께 선택해 설치한다.

 

p.s 플러그인은 솔직히 잘모르겠습니다. 그냥 나와있는데로 설치 ^.^.

 

 

이제 프로젝트를 하나 생성한다.

 

1. Dynamic Web Project를 하나 생성해서 HelloWorld라는 프로젝트를 만든다

 

2. /WEB-INF/lib 폴더 안에

   spring-framework-2.5.2-with-dependencies.zip을 압축을 풀어서 dist폴더안에 있는 spring.jar

   modules폴더안에 있는 spring-webmvc.jar, 마지막으로 /lib/jakarta-commons/commons-logging.jar 인포트한다.

   그리고 jakarta-taglibs-standard-1.1.2.zip을 압축을 풀어서 jstl.jar, standard.jar 를 인포트한다.

 

총 5개의 파일이 인포트 되었으면 개발환결 설정은 완료된 것이다.

 

HelloWorld 애플리케이션을 Spring기반에 만들어보기

 

간단히 Spring의 구조 설명

 

① 클라이언트의 요청에 대한 최초 진입 지점은 DispatcherServlet이 담당하게 된다.
대부분의 MVC를 지원하는 프레임워크가 메인 Servlet을 가지는 것처럼 Spring MVC
또한 메인 Servlet이 최초 진입지점으로 다음의 작업을 처리하게 된다.

② DispatcherServlet은 Spring Bean Definition에 설정되어 있는 Handler Mapping 정보를 참조하여 해당 요청을 처리하기 위한 Controller를 찾는다.

③ DispatcherServlet은 선택된 Controller를 호출하여 클라이언트가 요청한 작업을 처리.

④ Controller는 Business Layer와의 통신을 통하여 원하는 작업을 처리한 다음 요청에 대한 성공유무에 따라 ModelAndView 인스턴스를 반환한다. ModelAndView 클래스에는 UI Layer에서 사용할 Model데이터와 UI Layer로 사용할 View에 대한 정보가 포함되어있다.

⑤ DispatcherServlet은 ModelAndView의 View의 이름이 논리적인 View 정보이면 ViewResolver를 참조하여 이 논리적인 View 정보를 실질적으로 처리해야할 View를 생성하게 된다.

⑥ DispatcherServlet은 ViewResolver를 통하여 전달된 View에게 ModelAndView를 전달하여 마지막으로 클라이언트에게 원하는 UI를 제공할 수 있도록 한다. 마지막으로 클라이언트에게 UI를 제공할 책임은 View 클래스가 담당하게 된다.

 

1. web.xml 파일 수정

 

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="HelloWorld" 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">
 <display-name>HelloWorld</display-name>
 
 <servlet>
  <servlet-name>helloworld</servlet-name>
  < servlet-class>
  org.springframework.web.servlet.DispatcherServlet 
  </servlet-class>
 </servlet>
 
 <servlet-mapping>
  < servlet-name>helloworld</servlet-name>
  < url-pattern>*.htm</url-pattern>
 </servlet-mapping> 
  
 <welcome-file-list>
  < welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

 

 

우선 중요한 부분은 Spring 프레임워크내의 DispatcherServlet을 매핑하게 되는데 이부분은 Spring에서 제어행위를

처리하는 서블릿이다. 그리고 이에 대한 설정파일은 서블릿명-servlet.xml이 된다.

 

2. 규칙대로 /WEB-INF/helloworld-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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 <bean id="springController" class="web.SpringController" />
 <bean id="urlMapping"  
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
   <props>
    <prop key="/hello.htm">springController</prop> 
   </props>
  < /property>
 </bean>
 <bean id="viewResolver"  
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass">
   < value>org.springframework.web.servlet.view.JstlView</value>
  < /property>
  <property name="prefix">
   < value>/JSP/</value>
  </property>
  <property name="suffix">
   <value>.jsp</value>
  </property>
 </bean>
</beans>

 

총 3개의 Bean을 정의하고 있는데 첫번째는 처리제어를 위한 컨트롤러를 정의하고 있는데 springController라는 이름으로 web.SpringController라는 클래스를 매핑해주고 있습니다.

그리고 두번째는 hello.htm으로 들어오는 요청에 대해 springController로 넘기게 되어있고

세번째는 View의 역할을 할 JSP에 대한 설정이다

 

3. 다음에는 SpringController를 만듭니다
web패키지 아래에 SpringController를 만들되 org.springframework.web.servlet.mvc.Controller를 상속받아 구현합니다.

 

 

package web;

import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class SpringController implements Controller {
 protected final Log logger = LogFactory.getLog(getClass());
 
 public ModelAndView handleRequest(HttpServletRequest arg0,
   HttpServletResponse arg1) throws Exception {
        String now = (new Date()).toString(); 
        logger.info("returning hello view with " + now);      
        return new ModelAndView("hello", "now", now);
 }
}

 

 

소스내용을 보면 단순하게 요청에 대해 현재 시간을 담은 변수를 now라는 이름으로 hello라는 페이지로 전달하게 되어있다

이 hello는 helloworld-servlet.xml내에 viewResolver 빈에 정의한 설정에 따라 /JSP/hello.jsp가 될것이다.

 

4. 이제 /JSP/hello.jsp를 작성한다.

 

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>Hello World :: Spring Application</title>
</head>
<body>
<h1>Hello World! - Spring Application</h1>
<p>Greetings, it is now<c:out value="${now}" /></p>
</body>
</html>

 

 

컨트롤러를 통해 ModelAndView에 담겨진 now객체를 받아 뿌려주게 되어있다

여기서 문제점 하나! 태그라이브러리 선언 부분이 jstl라이브러리 버젼에 따라 달라진다.

jstl 라이브러리 버전 1.0은 uri="http://java.sun.com/jstl/core"
1.1 버전은 uri="http://java.sun.com/jsp/jstl/core" 로 선언.

현재의 경우 1.1 버전이기때문에  uri="http://java.sun.com/jsp/jstl/core" 로 선언하였습니다.

 

5. 이제 Tomcat을 기동하고 http://127.0.0.1/HelloWorld/hello.htm 으로 접근하면.. 출력이 됩니다.