thymeleaf
: Spring 안에서 가장 많이 사용하는 프론트 프레임워크
- build.gradle의 dependecies에
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
코드를 추가하고, gradle을 reload한다.
- 이전에 많이 사용하던 JSP를 사용하지 않고 이 부분을 선택하게 되었다.
thymeleaf를 활용하여 컨트롤러 구동 후 페이지 띄우기
[1] src/main/resources 폴더 안에 'templates' 폴더를 만든다.
[2] 'index.html' 파일을 만들고, 아래의 코드를 작성한다.
<!DOCTYPE html>
<html>
<head>
<title>타이틀</title>
</head>
<body>
인덱스입니다!
</body>
</html>
[3] 기존에 만들어 놓은 DefaultController.java 파일을 만들고, 아래의 코드를 작성한다.
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("")
@Controller
public class DefaultController {
@GetMapping({"/index"})
public String index() {
return "index";
/
}
- @RequestMapping("") : 매 번 반복되는 경로를 지정.
- @GetMapping({"/index"}) : /index 경로로 Get 요청이 들어왔을 때 실행되는 메소드임을 지정.
-> resource/template 폴더에 있는 경로의 파일을 반환해준다.

: 결과 화면
[4] 없는 파일의 이름을 return 하는 경우 ('index'가 아닌 'test'로 한 경우)

: 파싱할 페이지가 없음을 알려준다.
-> test.html 파일을 만들어주고 실행하면 가능하다.

: 결과 화면
유의사항

: 요청 url이 같을 경우 에러가 발생한다 -> 따라서 요청 url은 꼭 유니크 해야 한다.
Controller vs RestController

⭐️ 더 자세하게 둘의 차이를 보고 싶다면 ⭐️
-> https://velog.io/@oksk6681/Spring-Controller-VS-RestController
컬렉션 사용하기 (1)

: Map 함수를 사용하여 콘솔에 찍어보는 예시
- 저장 후 실행 후 새로고침하면 콘솔에 찍힌다.

: 결과 화면
컬렉션 사용하기 (2)

: return 값을 Object으로 건네보는 예시
- 저장 후 실행 후 새로고침하면 콘솔에 찍힌다.
: 결과 화면
- Object 자체가 화면에 출력되는 것을 볼 수 있다.
@RequestParam을 활용한 요청 URL의 파라미터 값 추출하기 (1)
[1] 특징
- 요청 경로 : '/listTest'
- 두 개의 String 타입의 변수를 받는다. (item1, item2)
[2] 코드 설명
- 받은 두 개의 String 변수를 출력한다.
- a_list라는 String 타입의 List 변수를 선언하고, 4개의 값을 집어 넣는다.
- a_list의 index가 0인 값을 출력한다.
- a_list를 리턴한다.

: 결과 화면
[3] String 타입이 아닌 int 타입으로 사용한 경우
- int 타입으로 받은 값이므로 형변환 없이 바로 계산이 가능하다.

: 결과 화면
[4] item1, item2 값을 요청 url에 추가하지 않았을 경우

: 결과 화면
- 파라미터가 필수인 코드로 인해서 Whitelabel Error Page가 보여지게 된다.
@RequestParam을 Object으로 받아 해결하는 방법

[1] 특징
- 요청 경로 : '/paramTest'
- String이며, Object 형태인 Map 타입으로 요청 파라미터를 받는다.

: 결과 화면
- Map의 경우 값이 없더라도 null로 처리하기에 Whitelabel Error Page가 보여지지 않는다.
[2] param을 작성한 경우

: 결과 화면
- item1, item2가 Map에 저장되고, 무사히 출력되는 것을 볼 수 있다.