IT정보

Spring으로 Helloworld 찍기

YUNOLAND 2008. 8. 11. 12:36

스프링 공부를  하는데.. 아무리 이론을 봐도 무슨 말인지 하나도 모르겠고,
자바 처음 배우던 때를 떠올리며.. Helloworld를 찍어봐야겠다고 판단.
네이버에서 찾아 낸 Spring으로 Helloworld찍기.. 시킨대로 하니 화면에 뜨네. 휴.
자 그럼, 안 잊어 먹기 위해 나도 정리를 해놓자.

내 컴퓨터 환경은...
JDK1.5 + Tomcat 5.5 + SpringFramework 2.5.6 아 차,, +  Eclipse는 Europa.

우선 스프링 프레임워크를 받으려면..
http://www.springframework.org/download 로 가서
spring-framework-2.5.6-with-dependencies  파일을 받는다.
뭘 받을지 모르겠음 멜 남기시고..

자 그럼 Eclipse 실행 시키고~ Dynamic Web Project를 만든다.
프로젝트 이름은 SpringHelloWorld 라고 지정.
Target Runtime은 Tomcat으로 하고 Finish.

lib폴더에 lib파일들을  넣는다.(제일 중요!!)
스프링 다운 받아서 압축 푼 폴더에 보면
spring-framework-2.5.6\dist\spring.jar 파일
: (스프링  프레임워크 lib파일)
spring-framework-2.5.6\lib\jakarta-commons\commons-logging.jar 파일
: (로그 사용을 위한 lib파일)
spring-framework-2.5.6\dist\modules\spring-webmvc.jar
: (컨트롤러 상속받기 위해서)

그리고 태그라이브러리 사용을 위한 jar파일을 받는다.
http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi
압축풀어 보면 standard.jarjstl.jar파일이있다. 

이 아이들까지전부 lib폴더에넣는다..

그럼 web.xml파일부터 수정해보자.

 <display-name>SpringHelloWorld</display-name>
   <servlet>
     <servlet-name>springapp</servlet-name>
     <servlet-class>
      org.springframework.web.servlet.DispatcherServlet
     </servlet-class>
   </servlet>
 
  <servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.htm</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

*.htm으로 들어오는 요청에 대해서 springapp서블릿을 사용하겠다는 얘기.
서블릿은 스프링 프레임워크에 있는 DispatcherServlet 이다.

DispatcherServlet의  제어 행위를 처리하는 설정 파일이 필요한데, 이것은 서블릿 이름에
-servlet.xml 을 붙여 작성한다. 그러니까 여기서는 springapp-servlet.xml  이겠지.
/WEB-INF/springapp-servlet.xml을  작성한다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <bean id="springappController" class="web.SpringappController"/>
 
    <bean id="urlMapping"
     class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="mappings">
      <props>
       <prop key="/hello.htm">springappController</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>/WEB-INF/jsp/</value>
     </property>
     <property name="suffix">
      <value>.jsp</value>
     </property>
    </bean>
</beans>

잘 보면 beans태그안에 bean태그가  3개가있다.
첫 번째는 Controller인거 같고,,
두 번째는 urlMapping 시켜주는데 /hello.htm으로 요청이 들어오면 springappController에게
넘기라는 거 같다.
세 번째꺼는 선행자 후위자를 정한거네.
미리  써놓으면 항상 쓰이는 WEB-INF/jsp/파일이름.jsp 에서 앞 뒤 없이 이름만 써서 가능.

그럼 SpringappController.java를 작성해 보자.
이놈은 Controller라는  인터페이스를 상속받습니다.
web이라는 패키지를 생성 후 거기에다가 class를 생성합니다.
생성할 때 New Java Class화면에서 Interface부분에 Add버튼을 클릭해서
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 SpringappController implements Controller {
 protected final Log logger = LogFactory.getLog(getClass());
 
 public ModelAndView handleRequest(HttpServletRequest arg0,
   HttpServletResponse arg1) throws Exception {
  // TODO Auto-generated method stub
  String now = (new Date()).toString();
  logger.info("returning hello view with " + now);
 
  return new ModelAndView("hello", "now", now);
 }
}

시간을 리턴한다. new Date()로 시간을 생성해서 그걸 String변환 후 now 변수에  넣고,
로그를 기록한 후, return할때 now라는 변수는 now라는 이름으로 쓸 수 있게 hello파일에 넘김.
이  hello는 앞  뒤  합쳐서 /WEB-INF/hello.jsp 가 됨.

이제 /WEB-INF/jsp/hello.jsp 파일을  보자.

<%@ page language="java" contentType="text/html; charset=windows-31j"
    pageEncoding="windows-31j"%>
<%@ 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=windows-31j">
<title>Hello :: Spring Application</title>
</head>
<body>
 <h1>Hello World! - Spring Application</h1>
 <p>Greetings, it is now <c:out value="${now}" /></p>
</body>
</html>

now라는 변수를 c:out태그로 출력한다. Controller에서시간을담아서 넘겨 받았다.
그리고 jsp파일을 WEB-INF폴더에 넣는 이유는 JSP파일접근에대한권한이 아마 우리한테 없고 Spring에게 넘겨서라고 내가 찾아 본 블로그 주인장은 말했다..
즉, 직접적으로 접근하지 못하도록 하려고?

was/SpringHelloWorld로 접속시 index.jsp를 실행하는데 파일이 없으니  하나 만들자.
폴더 위치 : WebContent/index.jsp
<head>와  </head> 사이에
<script>
 location.href="hello.htm"
</script>
이렇게만 입력하면 자동으로 hello.htm으로 포워드 해준다.
그럼 실행!

사용자 삽입 이미지

이상.. Helloworld찍을 수 있게 도움 받은 블로그 Kyle's Home님께 감사드린다.
이 글의 내용도 Kyle's Home님의 글을 거의 그대로 옮겨 놓았다.



'IT정보' 카테고리의 다른 글

List Bound Controls 비교  (0) 2009.04.15
Spring 어플리케이션 프레임워크 모듈 구성  (0) 2008.08.11
Spring 이란?  (0) 2008.08.11
SQL Loader 예제  (0) 2008.07.15
SQL Loader란?  (0) 2008.07.15