inblog logo
|
하쎄의 기술 일기장
    TeamProject

    [Travel] Join-Form 프로필 설정

    Join-Form 프로필 설정
    하세연's avatar
    하세연
    Sep 29, 2024
    [Travel] Join-Form 프로필 설정
    Contents
    UserControllerUserService

    UserController

    @PostMapping("/join") public String join(@Valid UserRequest.JoinDTO joinDTO, @RequestParam(value = "profile", required = false) MultipartFile profile , Errors errors) { // Validation 에러 체크 if (errors.hasErrors()) { return "redirect:/join-form"; // 유효성 검사가 실패하면 다시 회원가입 폼으로 } //insert 하는 모든 것들은 toEntitiy로 하면 된다. userService.registuser(joinDTO,profile); return "redirect:/login-form"; }
    💡
    클라이언트가 HTTP 요청으로 파일을 업로드할 때, "profile"이라는 파라미터로 업로드된 파일을 MultipartFile 객체로 받아올 수 있습니다.
    파라미터는 필수가 아니므로 파일이 포함되지 않으면 profile 변수는 null로 처리됩니다.
    예를 들어, 사용자가 프로필 사진을 업로드할 때 사용되는 구조라고 할 수 있다. 만약 사용자가 프로필 사진을 제공하지 않아도 문제 없이 요청이 처리가 된다.

    UserService

    loginId, nickName 중복 확인 코드

    @Transactional public void registuser(UserRequest.JoinDTO joinDTO, MultipartFile profile) { Optional<User> loginId = userRepository.findByUserId(joinDTO.getLoginId()); Optional<User> nickName = userRepository.findByUsernickName(joinDTO.getNickName()); System.out.println("123123213132"+nickName.isPresent()); if (loginId.isPresent()) { throw new Exception400("이미 존재하는 ID 입니다."); } if (nickName.isPresent()) { throw new Exception400("이미 존재하는 NICKNAME 입니다."); } User newUser = joinDTO.toEntity();
    💡
    loginIdnickName 중복 확인 유효성 검사라고 할 수 있습니다.
    • ID 중복 검사 (loginId.isPresent()):
      • userRepository.findByUserId(joinDTO.getLoginId())를 통해 joinDTO에서 입력된 loginId가 데이터베이스에 이미 존재하는지 확인합니다.
      • 만약 loginId가 이미 존재한다면 Optional<User>가 값을 갖고 (isPresent() == true), 중복된 ID임을 의미하므로 예외를 던집니다.
    • 닉네임 중복 검사 (nickName.isPresent()):
      • userRepository.findByUsernickName(joinDTO.getNickName())를 통해 입력된 nickName이 이미 존재하는지 확인합니다.
      • 마찬가지로 nickName이 이미 존재한다면 Optional<User>가 값을 갖고, 중복된 닉네임임을 의미하여 예외를 발생시킵니다.
     

    profile 업로드 방법

    // 3. 프로필 이미지 업로드 처리 if (profile != null && !profile.isEmpty()) { String imageFileName = MyFile.filesave(profile); // 파일 저장 로직 System.out.println("유저서비스1 "+imageFileName); newUser.setProfile("/profileimg/"+imageFileName); // 프로필 이미지 설정 System.out.println("유저서비스2 "+newUser.getProfile()); } else { // 파일이 없으면 기본 이미지 설정 String defaultImagePath = "/profileimg/man_img.png"; // 예: 남성 이미지를 기본으로 설정 System.out.println("유저 서비스3 " + defaultImagePath); newUser.setProfile(defaultImagePath); // 기본 프로필 이미지 파일명 설정 } userRepository.save(newUser); }
    💡
     
    Share article

    하쎄의 기술 일기장

    RSS·Powered by Inblog