> Hello World !!!

     

@syaku

#1 STS 설치 및 스프링 프로젝트 만들기 - 스프링 프레임워크 게시판 : Spring Framework Hello, World!!!

written by Seok Kyun. Choi. 최석균


스프링 프레임워크 연재 포스팅

2014/07/21 - [개발노트/Spring] - 스프링 프레임워크 게시판 #1 STS 설치 및 스프링 프로젝트 만들기 : Spring Framework Hello, World!!!
2014/07/21 - [개발노트/Spring] - 스프링 프레임워크 게시판 #2 스프링 프로젝트 만들기 : Spring Framework Create Project
2014/07/21 - [개발노트/Spring] - 스프링 프레임워크 게시판 #3 스프링 MyBatis 설정하기 및 로그출력 : Spring Framework MyBatis Log4jdbc
2014/07/21 - [개발노트/Spring] - 스프링 프레임워크 게시판 #4 스프링 XML , 스프링 유효성검사 : Spring Framework Hibernate Validator XML Marshaller
2014/07/21 - [개발노트/Spring] - 스프링 프레임워크 게시판 #5 스프링 트랜잭션 : Spring Framework Transaction
2014/07/21 - [개발노트/Spring] - 스프링 프레임워크 게시판 #6 스프링 파일업로드 : Spring Framework FileUpload
2014/07/28 - [개발노트/Spring] - 스프링 프레임워크 게시판 #부록 스프링 검색 및 조회수 올리기 , 스프링 한글깨짐: Spring Framework Cookie


개발 환경

Mac OS X 10.9.4
JAVA 1.6
Apache Tomcat 7.x
MySQL 5.x
Spring 3.1.1
Spring Tool Suite 3.5.1
Maven 2.5.1
myBatis 3.2.7
jQuery 1.11.0

2014.07.19 Written by 최석균 (Syaku)


1. 스프링 프레임워크 설치

스프링 프레임워크에서 개발툴 STS (Spring Tool Suite) 를 내려받아 설치하자.

내려받아 압축 파일을 풀고 STS를 실행한다. STS는 이클립스기반으로 개발된 툴로서 이클립스 사용자라면 익숙할 것이다.
STS가 실행될때 workspace 경로를 물어보면 원하는 위치를 설정한다. (workspace 는 STS에서 생성한 프로젝트를 저장하는 곳이다.)

[참고] 이클립스나 STS 는 자동화된 기능(컴파일, 빌드) 때문에, 반복적으로 실행될 경우 충돌에 의한 오류가 발생하기도 한다.
이럴때 소스에는 아무런 문제가 없는 데 오류가 발생할 경우 상단 메뉴에서 Project > Clean.. 메뉴를 실행하여 재컴파일 하거나 STS를 재실행하여 문제를 해결할 수 있다.

[2015.08.17] STS 3.7.x 는 자바 1.7 이상만 지원한다.

Hello, World!! 프로젝트 만들기

STS 에서 프로젝트를 생성하는 방법과 Hello, World!! 를 출력하는 방법을 알아본다.



마우스 오른쪽 버튼을 클릭한다. New > Spring Project 를 선택한다.



프로젝트명을 입력하고, 템플릿을 Spring MVC Project 를 선택한다.

프로젝트의 패킷 경로를 입력한다.

프로젝트 빌드가 완료되면 위와 같은 트리 구조가 생성된다. 빌드가 완료될때까지 기다린다.

스프링 프레임워크는 Maven (Apache Maven) 빌더를 사용하고 폴더 구조는 규정되어 있지만 변경도 가능하다.

Maven 빌더의 문제점을 보완한 Gradle 빌더의 사용이 점차 늘어나고 있다. 스프링 프레임워크도 두가지 빌더를 모두 지원한다.

새로운 프로젝트에는 기본적으로 Hello, World!! 예제가 포함되어 있다.
그래서 추가 작업없이 바로 서버를 구동하면 된다. 웹서버 또한 STS 에서 기본적으로 포함되어 있어 따로 구성할 필요는 없다.

웹서버를 구동하기 위해 STS의 왼쪽 트리메뉴에 프로젝트명을 선택한다. 마우스 오른쪽 버튼을 클릭한다.



Run As > Run on Server 선택한다.

만약 Maven 관련 오류가 발생하면, Maven 빌더가 없어서 발생하는 문제이다.
Apache Maven 을 따로 설치하거나, 메이븐 설정파일 pom.xml 을 열어 아래의 라이브러리를 추가한다.

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
</dependency>

pom.xml 파일을 저장하면 자동으로 메이븐이 빌드된다. 혹시 빌드되지 않을 경우 프로젝트명을 선택 후 오른쪽 마우스 버튼을 클릭하고 Maven 메뉴에서 Update Project를 선택하면 된다.

Maven 저장소 : http://mvnrepository.com
필요한 라이브러리 위 메이븐 저장소 사이트에서 검색하면 된다.

웹서버에 대한 설정 정보를 수정하려면 STS 트리메뉴에 있는 Servers 에서 수정할 수 있다.
catalina.properties 파일 안에 서비스 설정 값이 저장되어 있고, 웹서버설정 파일은 Servers 폴더 안에 server.xml 파일이다. (path 를 변경하면 STS 를 종료하고 다시 시작해야 한다.)
두 파일을 열어보면 포트는 8080 이며, 서비스 폴더는 bbs 인 걸 확인할 수 있다.

마지막으로 프로젝트를 브라우저에서 확인한다. 브라우저에 주소를 http://localhost:8080/begin 입력하고 결과화면을 확인한다.


Hello, World!! 프로젝트에 새로운 컨트롤러 추가하기

프로젝트 메뉴 > New > Package 를 선택하고 이름을 입력한다.

com.syaku.test

만들어진 패키지에 새로운 자바 파일을 생성한다. New > File 파일명을 입력한다.

TestController.java

@소스 TestController.java

package com.syaku.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class TestController {

    private static final Logger logger = LoggerFactory.getLogger(TestController.class);

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String test(Model model) {
        logger.info("test controller.......");

        model.addAttribute("data","한글되니?");

        return "test";
    }

}

다음은 출력을 담당할 뷰페이지를 생성한다.

뷰페이지 소스 폴더는 src/main/main/webapp/WEB-INF/views 이다.
뷰 파일을 생성할때 파일명이 test 메서드 리턴 String 과 같아야 한다.

return “test”; // 컨트롤러 리턴
test.jsp // 뷰 페이지 파일명

스프링 프레임워크는 다양한 방식읠 결과를 지원한다. 그 중 하나인 뷰리졸버를 이용한 String 방식을 사용한 것이다.

@소스 test.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
    <title>Controller Test</title>
</head>
<body>
    <h1>${data}</h1>
</body>
</html>

jstl 태그를 사용하여 컨트롤러의 변수를 출력하였다. ${data} = model.addAttribute(“data”) 와 같다. 컨트롤러에서 Model 객체에 데이터를 담아 뷰 페이지에서 사용할 수 있다.

새로 만들어진 컨트롤러를 스프링 프레임워크 설정파일에 적용해야 한다.
프로젝트를 생성하면 기본적으로 1개의 어플리케이션 서블릿이 생성된다.
STS 기준으로 어플리케이션 서블릿 경로는 src/main/webapp/WEB-INF/spring/appServlet 이다.

스프링은 여러 개의 어플리케이션 서블릿을 만들어 사용할 수 있다. 개발 특성에 따라 서블릿 수가 틀려진다. 단 서블릿들은 서로 공유되지 않는 다.

어플리케이션 서블릿 폴더에 servlet-context.xml 파일을 연다.

Hello, World!! 프로젝트에 사용된 컴포넌트 스캔이다.
<context:component-scan base-package="com.syaku.begin" />

그 아래 새로 추가한 패킷을 컴포넌트 스캔할 수 있게 추가한다.
<context:component-scan base-package="com.syaku.test" />

하나로 사용할 경우 <context:component-scan base-package="com.syaku" /> 위처럼 두개로 나눌필요는 없다...

웹서버를 재시작하고 결과를 확인한다. http://localhost:8080/begin/test 브라우저로 접속하면 된다.

한글이 정상적으로 출력되지 않는 다면, 뷰페이지 test.jsp 최상단에 아래의 소스를 추가한다.
<%@ page contentType="text/html; charset=utf-8" %>

스프링 프레임워크 STS 를 이용하여 프로젝트에 새로운 컨트롤러를 추가해 보았다.
다음에는 스프링 프레임워크를 이용하여 게시판 프로그램 개발하기로 한다.

Mac OS X 용 STS 를 사용할 경우 Content Assist 단축키가 ( Ctrl + Space ) 되어 있어 맥의 기본 단축키와 충돌이 발생한다. 그래서 STS 환경설정에서 General > Keys > Content Assist 찾아 단축키를 수정해서 사용하면 된다.
어시스트는 메서드나 클래스를 사용하기 위해 필요한 임포트 클래스를 자동으로 찾아준다.


프로젝트 소스얻기 (프로젝트 배포하기)

실서버에 프로젝트를 반영하기 위해 STS 에서 Maven Install 을 진행하면 된다. (지울 경우 maven clean)
우선 프로젝트에서 메뉴를 활성화시키고 Run As > 7 Maven Install 선택한다.
빌드가 끝나면 ./workspace/begin/target 아래 begin-1.0.0-BUILD-SNAPSHOT 폴더가 생성되고, *.war 파일이 생성된다.
둘중 하나를 실서버 서비스 폴더에 업로드하여 서버를 구동하면 된다. 배포방식은 그래들이나 ant가 더 효율적인 것 같다.


posted syaku blog

Syaku Blog by Seok Kyun. Choi. 최석균.

http://syaku.tistory.com