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" 출력
'Spring Boot MVC' 카테고리의 다른 글
[Intellij] Web server failed to start. Port was already in use. 해결 (0) | 2022.12.05 |
---|---|
Groovy Gradle, Kotlin Gradle (0) | 2022.12.02 |
[Spring Boot MVC] 2-1. hello world 출력하기 (0) | 2022.04.12 |
[Spring Boot MVC] 2. Spring Boot 프로젝트 생성 (0) | 2022.02.10 |
[Spring Boot MVC] 1. Spring Boot 개발 환경 구축 (0) | 2022.02.10 |
댓글