본문 바로가기
Spring Boot MVC

[Intellij] Kotlin Gradle "Hello World"

by jjudy 2022. 12. 2.

1. Controller 를 통해서만 출력

 

- Controller 패키지 생성 후 HomeController 클래스 생성.

- @RestController 는 Restful Web API를 더 쉽게 만들기 위해 도입된 기능으로 @Controller + @ResponseBody 라고 생각하면 됨. 

- @ResponseBody 어노테이션은 자바 객체를 HTTP 응답 본문의 객체로 변환해 클라이언트에게 전송함.

- 즉, @RestController 는 따로 html 파일을 만들지 않아도 웹 브라우저에 "Hello World"를 출력 가능함.

package com.example.Controller;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

@RestController
public class HomeController {

    @GetMapping("/")
    public String main() {
        return "Hello World";
    }

}

 

- localhost:8080 으로 접속 시, Hello world 가 출력된 것을 확인 가능함.

 

2. JSP를 통해 출력

 

- Intellij 에서 jsp 를 사용하려면 패키징을 꼭 war로 선택해야 한다... (몇시간을 헤맨건지..!!!)

- @GetMapping 어노테이션을 이용해 클라이언트의 요청을 처리할 URL을 매핑한다.

 

① HomeContoller.java 작성

package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/")
    public String home() {
        System.out.println("start");

        return "home";
    }

}

 

② build.gradle.kts 에 dependency 추가

- Path with "WEB-INF" or "META-INF" 에러가 발생했을 때는 dependency를 추가해주면 해결가능.

dependencies {
    implementation("org.apache.tomcat.embed:tomcat-embed-jasper:10.1.2")
    implementation("javax.servlet:jstl:1.2")
}

 

③ application properties 설정

- jsp 파일의 위치를 설정

server.port=8090 #포트 지정

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp​

 

- properties 설정 후,  src > main > webapp > WEB-INF > views 디렉터리 생성하기

- webapp 디렉터리 없어도 새로 생성해주면 됨.

 

 

④  home.jsp 작성

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!Doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>
	Hello World
</body>
</html>

 

- localhost:8090 으로 접속 시, "Hello World" 출력

 

3. Thymeleaf 를 통해 출력

 

① HomeContoller.java 작성

package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/")
    public String home(Model model) {
        model.addAttribute("hello","Hello World");
        System.out.println("start");

        return "/home";
    }
}

 

② build.gradle.kts 에 dependency 추가

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
    implementation("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.1.0")
}

 

③ application properties 설정

server.port=8090

spring.thymeleaf.cache=false
spring.thymeleaf.suffix=.html

 

④  /src/main/resources/templates/home.html 작성

<html lang="ko" xmlns:th="http://thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Home</title>
</head>
<h2 th:text="${hello}">message</h2>
</html>

 

- localhost:8090 으로 접속 시, "Hello World" 출력

댓글