[Spring Boot] thymeleaf / 컬렉션 / RequestParam 사용법

김광일·2024년 9월 4일
0

SpringBoot

목록 보기
3/19
post-thumbnail

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에 저장되고, 무사히 출력되는 것을 볼 수 있다.
profile
안녕하세요, 사용자들의 문제 해결을 중심으로 하는 프론트엔드 개발자입니다. 티스토리로 전환했어요 : https://pangil-log.tistory.com

0개의 댓글