[출처] Spring @MVC - Hello Java 만들어 보기|작성자 Alex

 

1.   Tomcat Server 설정

  Tomcat Server Instance하나 만들기

Server view에서 우클릭 -> New -> Server를 클릭

   

   

Dialog에서 Tomcat Version을 고르고 Server name을 적당히 정해 주고 Next 

  

   

   

나처럼 Tomcat을 설치한적이 없는 사람은 Download and Install 클릭 바로 설치하자

   

   

Finish Click

   

Finish Click하면 Tomcat을 설치할 디렉토리 선택 dialog가 뜨는데 디렉토리를 선택하고 나면 아래의 창으로 돌아 온다.다시 Finish를 Click하면 tomcat을 download해서 설치하게 된다. 

  

   

   

Server View에서 설치된 Tomcat server를 확인 할 수 있다. 

  

   

Dynamic Web Project의 추가

내가 만든 Project를 구동시켜줄 Tomcat 서버도 만들었으니 이젠 Spring Project를 생성해 보자

   

Package Explorer Perspective에서 우클릭->New->Dynamic Web Project 선택

   

   

Project Name에 적당한 이름 넣고

JRE 부분은 default로 첫번째 radio button이 선택돼 있을 것인데 이대로 진행해도 무방하다. 하지만 나는 내가 설치한 그 jdk를 쓰도록 변경,

Finish Click해서 Proejct 생성 완료

   

   

Source폴더와 build된 class가 위치할 폴더를 설정하는 dialog인데 Add Folder 버튼을 클릭해서 config folder를 하나 추가한다.

나중에 이용할 일이 생길 수도 있다. 

  

   

   

config가 추가된 모습.

Next를 클릭해 다음 진행

   

   

   

Context root는 http://localhost/first/hello.do 이부분에 들어갈 것이기 때문에 간단하게 변경한다. 안 바꾸면My_First_Project가 된다. 물론 설정 파일을 변경해서 추후에 변경 가능하다. 

  

   

여기까지 끝 마치고 나면 아래와 같이 두개의 프로젝트를 보게 될 것이다.

Server는 Tomcat Server 추가 할 때 만들어진 것으로 Tomcat설정 파일들을 수정할수 있고, 다른 하나는 방금 만든Dynamic Web Project이다. 

  

   

Spring MVC를 이용해서 Hello Java를 찍기 위해서는 Spring Framework library들이 필요하다. 이런 Library들을 추가 하는 방법은 우리가 잘 알고 있듯이 아래처럼 lib에 추가하면 된다. 해당 파일을 copy해서 lib 폴더에 붙여 넣기 하면 된다. 

   

   

   

  web.xml

파일 위치 : /My First Project/WebContent/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>My First Project</display-name>

   

  <!-- ContextLoaderListener에서 사용할 환경 설정 파일로 이곳에 Bean들을 등록하게 된다. default name은applicationContext.xml이다. -->

 <!-- Service, DA Layer 의 모든 빈을 이곳에 등록한다.  -->

  <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>/WEB-INF/spring-config/myfirst-context.xml</param-value>

  </context-param>

  <listener>

    <display-name>Context Loader</display-name>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

   

     

  <!-- DispatcherServlet 설정, Front Controller, Facade Bean 역할을 한다.  -->

  <servlet>

    <servlet-name>dispatcherServlet</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!-- '/WEB-INF/' + servlet-name + '-context.xml' 이 default name 이다. 여기에서는 folder를 변경하기 위해서 해당 param을 선언했다.-->

    <!-- DispatcherServlet관련 내용을 설정 -->

    <init-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>/WEB-INF/spring-config/dispatcherServlet-context.xml</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <!--dispatcherServlet을 사용할  url pattern을 선언한다. -->

  <servlet-mapping>

    <servlet-name>dispatcherServlet</servlet-name>

    <url-pattern>*.do</url-pattern>

  </servlet-mapping> 

   

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

</web-app>

   

   

  dispatcherServlet-context.xml

파일 위치 : /My First Project/WebContent/WEB-INF/spring-config/ dispatcherServlet-context.xml

spring-config 폴더를 먼저 생성한다.

Spring-config 폴더에서 우클릭 -> New -> Spring Bean Configuration File 선택

 

   

   

dispatcherServlet-context.xml 입력 후 Next 

  

   

   

Beans, context, mvc 모두 3.0 선택 후 finish 

  

   

파일을 열어 아래와 같이 편집한다.

<?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:context="http://www.springframework.org/schema/context"

             xmlns:mvc="http://www.springframework.org/schema/mvc"

             xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd

                           http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd

                           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

   

 <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->

             <!-- Prefix와 surffix를 정해 뒀기 때문에 controller에서 View Resoler에게 정보를 줄때 해당 부분을 빼고 줄수 있다. -->

             <!-- View Resolver를 사용하기 때문에 consroller에서는 ModelAndView를 return하면 된다. -->

             <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

                 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

                           <property name="prefix" value="/WEB-INF/views/" />

                           <property name="suffix" value=".jsp" />

             </bean>

              

                

             <!-- Annotation handler mapping definition - DispatcherServlet이  특정 URL의 요청을 특정  Contoller에게 넘겨줘야 하는데 이른 mapping해주는 Handler Mapping - 이것도 default 이므로 생략 가능하다.-->

             <bean id="annotationHandlerMapping"            class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">

                           <property name="order" value="1" />

             </bean>

   

             <!-- Enables annotated POJO @Controllers - contoller의 method별로 url mapping이 가능해 진다. -  default Handler Adapter 이므로 등록이 필요하진 않다. -->

             <bean id="annotationHandlerAdaptor"               class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

                           <property name="synchronizeOnSession" value="true" />

             </bean>

             <!-- @Controller annotation을 scan할 package myapp 하위 이외의 곳은 scan하지 않는다. -->

        <!-- Controller(@Controller를 가진)를 scan할 위치  -->

             <context:component-scan base-package="com.alex.myapp">

             </context:component-scan>

              

   

              

             <!-- Controller가 필요 없이 jsp만 필요 할경우 사용 할 것이다. -->

             <bean id="urlFilenameViewController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />

                <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

                           <property name="order" value="2" />

                           <property name="mappings">

                         <props>

                                      <prop key="/jquery/json_data1.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ex2.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ex3.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ex4.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/temp.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/temp2.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/temp3.do">urlFilenameViewController</prop>

                                       

                                      <prop key="/jquery/jquery_ui1.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ui2.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ui3.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ui4.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_board.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_board_data.do">urlFilenameViewController</prop>       

                                      <prop key="/jquery/jquery_board2.do">urlFilenameViewController</prop>                                              

                                      <prop key="/jquery/autocomplete.do">urlFilenameViewController</prop>                                              

                                                                               

                                       </props>

                         </property>

            </bean>

                           <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

              

</beans>

  

   

   

  myfirst-context.xml

dispatcherServlet-context.xml 파일과 동일하게 빈 파일만 만들어 둔다.

   

   

  jsp  추가 하기

WEB-INF/views 아래 jsp들을 위치 시키면 된다.(dispatcherServlet-context.xml 참조)

/WEB-INF/views/hello/hello.jsp 파일 생성 아래와 같은 모양을 만든다. 

  

   

jsp 내용

   

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!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>Insert title here</title>

</head>

<body>

        ${WellcomeText} 완성입니다.

 </body>

</html>

   

  controller java 추가 하기

아래와 같이 적당한 package를 구성하고 HelloController.java를 추가한다. 

  

   

HelloController.java 의 내용

package  com.alex.myapp.hello.controller;

   

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

   

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

   

/* @Controller 어노테이션에 의해서 controller 대상이 된다. */

@Controller

public class HelloController {

   

        /* AnnotationMethodHandlerAdapter  의해서 메소드별로 URL 매핑이 가능하다.*/

        /* 어노테이션에 의해 http://도메인/context-root/hello.do 일경우 아래 method 호추된다. */

        @RequestMapping("/hello.do")

        public ModelAndView hello(HttpServletRequest request, HttpServletResponse response ) {          

                  

               ModelAndView view = new ModelAndView();

               view.addObject("WellcomeText""Hello Java");

                

               /*

                  dispatcherServlet-context.xml View Resolver 설정 때문에 /WEB-INF/views/hello/hello.jsp  아닌 hello/hello 되는 것인다.

                              <beans:property name="prefix" value="/WEB-INF/views/" />

                              <beans:property name="suffix" value=".jsp" />

                */

               view.setViewName("hello/hello");

                

               return view;

                

        }

}

  

   

   

  Tomcat Server에 deploy하기

Server View에 보면 우리가 앞서 만들어 놓은 tomcat server가 보인다.

여기에서 우클릭->Add and Remove 

  

dialog에서 My First Project를 선택해 add를 한다.

그럼 아래 그림처럼 된다. 그 후 Finish한다. 

  

   

완료된 후 모습

   

Server Start 후

http://localhost:8080/first/hello.do 로 접속하면 Hello java를 볼 수 있다. 

  

   

   

실행을 했는데 404 Not found 에러가 발생한다면

아래 화면 처럼 Servers의 내가 추가한 Tomcat아래 있는 server.xml을 열어 해당 파일 맨 아래에 Context path가"/first"로 되어 있는지 확인한다. "/first"가 아니면 브라우져의 URL을 path에 맞추던지 path를 "/first"로 바꾸고tomcat을 restart 하면 된다. 

  

   

   

   

   

   

지금까지 Spring+Tomcat을 이용해 화면에 Hello java를 출력하는 환경을 구성해 봤다.

이 글에서는 Spring @MVC 한 사이클을 만들어 봤으니 가장 기초적인 환경 설정은 된 것이다. 엔터프라이즈 개발 환경을 구축하기 위해서는 iBatis, Spring Security, JMS, Transaction, MultipartRequest 등등 붙여야 할 내용이 무궁무진 하게 많다.

다음 글을 통해 하나씩 살을 붙여가도록 하겠다.

   

[출처] Spring @MVC - Hello Java 만들어 보기|작성자 Alex

Posted by linuxism
,