Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JoinColumn
- jpa회원가입
- jpa에러
- queryDSL
- JPA
- github
- 스프링부트오류
- json
- ERD 작성
- spring서버
- @IdClass
- 인텔리제이
- jwt메서드
- git
- Q 클래스
- 최종 프로젝트
- REST API 규칙
- Filter
- 스프링 부트 기능
- json gson 차이
- 복합키
- REST란
- uncheck Exception
- 빈생성안됨
- Unsatisfied dependency
- Spring Spring boot 차이
- 스프링 부트 공식 문서
- Error creating bean with name
- JPA주의사항
- 1차캐시
Archives
- Today
- Total
Everyday Dev System
Validation, 회원가입 데이터에 적용하기 본문
이전 Validation 관련 글
2023.06.20 - [내배캠 주요 학습/Spring 심화] - 중요한 Validation, 예외처리
1. 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
2. Dto에 필드마다 Validation 어노테이션 기재
package com.sparta.springauth.dto;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SignupRequestDto {
@NotBlank
private String username;
@NotBlank
private String password;
@Email
@NotBlank
private String email;
private boolean admin = false;
private String adminToken = "";
}
3. Controller에서 해당 메서드 수정.
** log를 쓰기 위해 클래스 위에 @Slf4j 기재해야 함.
@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto, BindingResult bindingResult) {
// Validation 예외처리
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
if(fieldErrors.size() > 0) {
for (FieldError fieldError : bindingResult.getFieldErrors()) {
log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
}
return "redirect:/api/user/signup";
}
userService.signup(requestDto);
return "redirect:/api/user/login-page";
}
- Validation에서 예외가 발생하면 BindingResult 객체에 오류에 대한 정보가 담겨서 들어온다.
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
bindingResult에서 오류가 난 필드들을 가져와서 List 형태로 저장한다.
if()~문을 통해 오류가 난 필드가 있는지를 확인한다.
즉, 오류 필드 여부를 확인하기 위해 선언된 리스트일 뿐이다.
log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
오류가 난 필드와 에러 메시지를 가져와서 로그에 출력한다.
오류 발생한 경우 회원가입 페이지를 다시 redirect 하고,
오류가 발생하지 않은 경우 로그인 페이지로 이동한다.
결과 :
아무 내용도 입력하지 않고 회원가입을 누를 경우 서버에 오른쪽과 같은 log.error를 띄어준다.
'내배캠 주요 학습 > Spring 숙련' 카테고리의 다른 글
RestTemplate - get방식 : Server 코드 설명 (0) | 2023.06.20 |
---|---|
RestTemplate - get방식 : Client 서버 코드 설명 (0) | 2023.06.20 |
중요한 Validation, 예외처리 (0) | 2023.06.20 |
Spring Secutiry (0) | 2023.06.20 |
Spring 에서 Filter란? (0) | 2023.06.20 |