#3_[spring boot] 프로젝트 처음 시작하기(jsp vieeResolver) :: 개발/일상_Mr.lee

#3_[spring boot] 프로젝트 처음 시작하기(jsp vieeResolver)

Posted by Mr.mandu.
2017. 11. 6. 20:03 개발/spring boot, gradle, mybatis Project

지난 포스팅에 이어 이번에는 Controller에를 거쳐


[개발/spring boot, gradle, mybatis Project] - [spring boot] gradle 프로젝트 생성하기(sts)


jsp 페이지로 오는 모듈을 작성해 보도록 하겠습니다.

아주 기본 페이지만 만들것이기 때문에 간단히 따라하실 수 있습니다.

결과적인 프로젝트 구조는 다음과 같이 만들 것 입니다.




그럼 먼저 

build.gadle을 살펴보겠습니다.

apply plugin: 'java'
apply plugin: 'eclipse-wtp' // 이클립스에서 구동하고 배포하기위해 플러그인 설치합니다.
apply plugin: 'war'
 
sourceCompatibility = 1.8   // 자바 버전입니다.
targetCompatibility = 1.8

version = '1.0'
jar {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart',
                   'Implementation-Version': version
    }
}

eclipse {
    // 빌드하고나면 프로젝트정보도 같이 지워지는데, Gradle프로젝트임을 인식시켜줍니다.
    project.natures "org.springsource.ide.eclipse.gradle.core.nature"
    wtp {
        facet {
            facet name: 'jst.web', version: '3.1'
            facet name: 'jst.java', version: '1.8'
        }
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
    
    //추가 내용
     providedCompile "javax.servlet:javax.servlet-api:3.1.0"
    compile "org.springframework:spring-webmvc:4.1.6.RELEASE"
    compile "org.springframework.boot:spring-boot-starter-web:1.5.8.RELEASE"
    /*내장 톰켓에서 jstl 인식하도록 추가*/
    compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '8.5.20'
	compile('javax.servlet:jstl:1.2') /*jsp를 사용하기 위해 jstl 추가 */
}

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' // 인코딩 UTF-8로 통일.

test {
    systemProperties 'property': 'value'
}

uploadArchives {
    repositories {
       flatDir {
           dirs 'repos'
       }
    }
}


스프링부트는 내장 톰캣을 지원하기 때문에 이를 활용하기 위해

따로 톰캣을 설정하지 않고, build.gradle로 설정하였습니다.


이번엔 Index.java 파일을 만들어보겠습니다.

package lee;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Index {
	public static void main(String[] args) {
        SpringApplication.run(Index.class);
    }

}


@SpringBootApplication의 의미는

@SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan

이런 의미 입니다.


@Configuration : 현재 클래스가 Spring의 설정 파일임을 알려주는 어노테이션

@EnableAutoConfiguration : Spring boot 클래스패스 세팅 및 다양한 Bean 추가 등을 시켜주는 어노테이션

@ComponetScan : 다른 컴포넌트, 서비스, 설정 등을 찾을 수 있게 도와주는 어노테이션


이번엔 MainController 입니다.

package lee.main.controller;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

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 MainController {

 	@RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
         
        String formattedDate = dateFormat.format(date);
         
        model.addAttribute("serverTime", formattedDate );

       
         
        return "index";
    }

}

코드 내용을 보면 특이한점이 없다는점을 알 수 있습니다.

기본 '/' 패스를 찾아 index.jsp 페이지로 이동 시기는 것 입니다.

이제 return 값이 index.jsp를 찾아갈 수 있도록 설정해보겠습니다.





기존 스프링은 dispatchServlet 에 설정 을 두고 여러 xml 파일을 읽었습니다.

하지만 스프링부트는 설정을 간단하게 할수 있습니다.

application.Properties를 생성해보겠습니다.


application.Properties 파일을 만들기위해

new - General - File을 선택하여 확장자까지 제가 입력해서 만들었습니다.

그리고


spring.mvc.view.prefix: /WEB-INF/views/

spring.mvc.view.suffix: .jsp

를 입력해 줍니다.


설정이 간단하지 않나요?


그리고 이제 index.jsp 페이지를 만들어보겠습니다.

위의 사진처럼 만들기위해서는

/WEB-INF/views/ 폴더를 직접 생성해주셔야 합니다.

그리고 거기에 index.jsp 페이지를 만듭니다.


index.jsp


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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>

The time on the server is ${serverTime}.
<br>
</body>
</html>

그리고 화면을 요청해 보겠습니다.



기폰패스를 입력하여 index 페이지를 출력하였습니다.

다음 포스팅은 mvc 패턴을 실습해 봐야겠습니다.

감사합니다.