본 내용은 이지업클래스 최주호님의 스프링부트 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 문자열 응답함
}
}
'JAVA > Spring Boot' 카테고리의 다른 글
| [강의 정리] 스프링부트 블로그 프로젝트 (1) | 2023.01.13 |
|---|---|
| [강의 정리] 스프링부트 개념정리 with JPA (0) | 2023.01.10 |
댓글