IDE: IntetlliJ Ultimate
Spring Boot: 3.3.0
JDK: 17
validation 체크를 위해 `build.gradle`에 의존성 추가되어 있어야 함
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
.
.
}
💾 AuthController.java
@PostMapping("/auth/signup")
public String signup(@Valid SignupReqDto signupReqDto, BindingResult bindingResult) { // key=value (x-www-form-urlencoded)
if (bindingResult.hasErrors()) {
Map<String, String> errorMap = new HashMap<>();
for (FieldError error : bindingResult.getFieldErrors()) {
errorMap.put(error.getField(), error.getDefaultMessage());
log.info("error.getDefaultMessage() = " + error.getDefaultMessage());
}
}
User join = authService.join(signupReqDto);
log.info("join: {}", join.toString());
return "auth/signin";
}
- `signup` 메서드의 파라미터에 `@Valid` 추가
- 나중에 `BindingResult` 및 관련 코드 추가
👉 `username`이 20자가 넘는 경우 아래 에러 로그 출력
> BindingResult
Spring MVC에서 폼 데이터를 바인딩한 후, 그 결과를 담고 있는 객체임
- 검증 결과 저장
- `BindingResult` 객체는 유효성 검사를 수행하고 그 결과를 저장함
- 검증 오류가 있으면, 이 객체에 오류 정보가 기록됨
- 오류 처리
- 폼 제출 후 `BindingResult`를 통해 오류를 확인하고, 사용자에게 적절한 오류 메시지를 표시할 수 있음
- 검증 오류를 처리하고, 뷰에서 이를 어떻게 표시할지 결정하는 데 사용됨
- 폼 데이터 처리
- 바인딩된 데이터와 검증 결과를 함께 다루어, 요청 처리 로직에서 폼 데이터와 관련된 오류를 효과적으로 관리할 수 있음
💾 SignupReqDto.java
@Data // Getter, Setter
public class SignupReqDto {
@Max(20)
private String username;
@NotBlank
private String password;
@NotBlank
private String email;
@NotBlank
private String name;
private String role;
.
.
}
- `username` 필드에 `@Max(20)` 추가
- `password`, `email`, `name` 필드에 `@NotBlank` 추가
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 번호 증가 전략이 DB를 따라감
private Long id;
@Column(length = 20, unique = true)
private String username;
@NotNull
private String password;
@NotNull
private String name;
private String website;
private String bio; // 자기 소개
@NotNull
private String email;
.
.
.
}
- `password`, `name`, `email`에 `@NotNull` 추가
이지업클래스 [메타코딩] 스프링부트 SNS프로젝트 - 포토그램 만들기 강의 실습
참고
OpenAi. (2024) ChatGPT (version 3.5)[Large Language model]. https://chat.openai.com
300x250
'Framekwork > photogram' 카테고리의 다른 글
[스프링 부트 포토그램] 23강 인증 회원가입 - @ResponseBody 사용하기 (0) | 2024.09.09 |
---|---|
[스프링 부트 포토그램] 21강 인증 회원가입 - 전처리 후처리 개념잡기 (0) | 2024.09.04 |
[스프링 부트 포토그램] 20강 인증 회원가입 - 비밀번호 해시 (BCryptPasswordEncoder) (0) | 2024.09.03 |
[스프링 부트 포토그램] 19강 인증 회원가입 - 완료 (0) | 2024.09.03 |
[스프링 부트 포토그램] 18강 인증 회원가입 - User 모델 만들기 (0) | 2024.09.02 |