LUMI_dev
Validation #2. Validation 예외처리 본문
스파르타 코딩 클럽 | 자바 심화 과정/Spring Master (숙련 주차)
Validation #2. Validation 예외처리
luminous_dev 2025. 2. 7. 05:20회원가입 예외처리
SignupRequestDto
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 = "";
}
어노테이션 붙이기
UserController - signup
package com.sparta.springauth.controller;
import com.sparta.springauth.dto.LoginRequestDto;
import com.sparta.springauth.dto.SignupRequestDto;
import com.sparta.springauth.service.UserService;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Slf4j
@Controller
@RequestMapping("/api")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/user/login-page")
public String loginPage() {
return "login";
}
@GetMapping("/user/signup")
public String signupPage() {
return "signup";
}
@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto, BindingResult bindingResult) {
//BindingResult : Validation에서 오류가 나면 이 BindingResult 객체에 오류에 대한 정보가 담겨서 들어옴
// Validation 예외처리
List<FieldError> fieldErrors = bindingResult.getFieldErrors(); //.getFieldErrors() : 오류가 난 field들을 하나씩 가지고 올 수 있음
if(fieldErrors.size() > 0) { //에러가 있는지 확인
for (FieldError fieldError : bindingResult.getFieldErrors()) {
//해당 오류가 어떻게 발생하고 있는지 체크해서 로그를 찍어줌
log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
//fieldError.getField() 어떤 필드에서 에러?
}
return "redirect:/api/user/signup"; //다시 회원가입하라
}
userService.signup(requestDto);
return "redirect:/api/user/login-page"; //회원가입 성공
}
}
'스파르타 코딩 클럽 | 자바 심화 과정 > Spring Master (숙련 주차)' 카테고리의 다른 글
Validation #1. Validation 검증 과정 (★프로그래밍의 가장 중요한 부분) (0) | 2025.02.07 |
---|---|
접근 불가 페이지 만들기 (권한 제어 @Secured) (0) | 2025.02.07 |
Spring Security - #2. 로그인 (세션) // @AuthenticationPrinciple (0) | 2025.02.07 |
Spring Security - #1.Spring Security 프레임워크 - Filter 대신 인가,인증 편리하게 해줌 (0) | 2025.02.06 |
Filter 필터 (1) | 2025.02.06 |