본문 바로가기
JAVA/Spring Boot

[강의 정리] 스프링부트 인스타그램 프로젝트

by taurusx 2023. 1. 13.

본 내용은 이지업클래스 최주호님의 스프링부트 SNS 프로젝트 - 포토그램 만들기 강의를 학습하고 정리한 내용입니다.

 

[강의 링크]

 

이지업클래스 | 모두를 위한 온라인 IT CLASS

쉽게 배우고 알차게 쓰는 온라인 IT CLASS.

easyupclass.e-itwill.com

 

 

* HTML 응답하기

- 템플릿 엔진 사용 이유 : HTML 파일에 JAVA 코드를 쓸 수 있도록 해주기 때문에, 동적인 데이터 처리가 가능해짐

- 파일 기본 경로

  - 일반 정적 파일 : resources/static (파일 확장자 표기)

  - 머스테치 엔진 : resources/templates (파일 확장자 표기 X)

  - JSP 엔진 : src/main/webapp

    - 스프링부트가 지원해주지 않기 때문에 직접 폴더를 생성해야 함

    - application.yml ViewResolver 설정을 따로 해주어야 함

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

 

 

* DTO (Data Transfer Object)

- 통신 시 전달하는 데이터를 담는 오브젝트

 

 

* 사용자 입력값 검사 3가지

1. 프론트엔드 쪽에서 입력 값 검사

2. 백엔드 전처리 : DB 요청 전 Controller에서 입력값에 대한 유효성을 검사함

  - Ex. 입력 값이 제한 길이를 초과했는지

  - Validation 이용하여 처리

3. 백엔드 후처리 : DB 요청 결과를 바탕으로 입력값 검사함

  - Ex. 이미 동일한 username을 가진 사용자가 있는지

  - @ExceptionHandler 이용하여 처리

- 핵심기능(Ex. 회원가입)을 위해 추가하는 전처리, 후처리 작업을 AOP라고 함

 

 

* 무한참조 해결

- @JsonIgnoreProperties 어노테이션 이용하여 무한참조를 해결할 수 있음

[예시]

// images의 Getter 함수 호출 시 Image 클래스 내부의 user를 무시하고 JSON으로 파싱하도록 설정
@JsonIgnoreProperties({"user"})
private List<Image> images;

 

 

* 유효성검사 입력 유무 체크 어노테이션

- @NotNull : Null 여부 체크

- @NotEmpty : Null 또는 빈 값 여부 체크

- @NotBlank : Null, 빈 값, 빈 공백 여부 체크

 

 

* @ResponseBody

- @Controller를 가진 컨트롤러의 메서드에 @ResponseBody을 붙이면 페이지가 아닌 데이터를 응답함

@Controller
public class IndexController {
    @GetMapping("/user")
    public @ResponseBody String user() {
        return "user";  // user.html 페이지가 아니라 user 문자열 응답함
    }
}

 

댓글