[회원가입] 비밀번호 확인
·
Project 댕린이집
보안성을 위해 회원가입 시 비밀번호와 비밀번호 확인 필드의 값이 일치하는지 확인하는 과정입니다. 처음에는 아무것도 모르고 비밀번호2 라는 컬럼을 DB에 생성했더랬죠... 하지만 그럴 필요없이 DTO와 프론트단에 필드만 만들어주면 됩니다! [React] Register.js password2 필드를 추가해줍니다. {/* 비밀번호 */} 비밀번호 {/* 비밀번호 확인 */} 비밀번호 확인 UserDTO.java private String password2; 를 추가해줍니다. @JsonProperty("password2") @NotBlank(message = "비밀번호는 필수 입력 값입니다.") @Pattern(regexp = "(?=.*[a-z])(?=.*[0-9]).{8,16}$", message = "비..
[회원가입] 유효성 검사
·
Project 댕린이집
UserDTO에 @Valid 사용 build.gradle implementation 'org.springframework.boot:spring-boot-starter-validatio import import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; @NotBlank @Pattern @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Builder public class UserDTO { private Long id; @JsonProperty("userId") @NotBlank(message = "아이디는 필수 입력 값입니다.") privat..
[회원가입] ResDTO 이용한 아이디 중복 확인
·
Project 댕린이집
아이디 입력 필드 옆에 아이디 중복 확인 버튼을 구현했었는데회원가입 버튼을 누를 시 다시 한번 확인하고 resoponse 해주는 부분을 구현했습니다.  [ ResDTO ]먼저 모든 API의 Response에 대해 공통으로 감싸줄 수 있는 ResDTO를 새롭게 만들어 주었습니다.  🧐 그렇다면 ResDTO를 만드는 이유는 무엇일까요?Response에서 요청된 응답 값만 전달해주는게 아니라 결과에 대한 코드, 내용, 에러메세지 등을 같은 포맷으로 전달해주어 프론트에서 더 효율적으로 사용하게 하기 위한 목적입니다! 또한, 객체 지향적인 설계를 촉진합니다. ResDTO 객체를 사용함으로써 응답 데이터를 하나의 객체로 추상화하고, 응답 생성 및 전달에 관련된 로직을 한 곳에서 관리할 수 있게 됩니다. 서버 사이..
문자열 나누기 / 숫자 짝꿍 / 체육복 / 대충 만든 자판 / 완주하지 못한 선수
·
프로그래머스/1단계
1️⃣ 문자열 나누기 문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solut..
[회원가입] 비밀번호 암호화
·
Project 댕린이집
[  WebSecurityConfig.java  ] PasswordEncoder를 빈으로 등록합니다. @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); }  PasswordEncoder는 주로 사용자의 비밀번호를 해싱(hashing)하여 저장하고, 로그인 시에 비밀번호를 검증하는 데 사용됩니다.   여기서 BCryptPasswordEncoder는 PasswordEncoder의 구현체 중 하나로, BCrypt 해싱 알고리즘을 사용하여 비밀번호를 안전하게 해싱합니다.  [ UserService.java ]package com.example.demo.service;import com.example.demo...
mapstruct 오류 해결 : STS 에서 IntelliJ로 툴 변경
·
Project 댕린이집
📌 툴 변경 이유?지난 글에서 계속 java.lang.ClassNotFoundException: Cannot find implementation for com.example.demo.mapper.UserMapper 오류가 난다고 했었는데요. 구글링 하며 온갖 방법을 다 써봐도 (의존성 설정 순서도 중요하다고 해서 다 해봤는데도....ㅠㅠ) 해결이 되지 않았습니다.이클립스의 문제라고 하는 글들도 있어서 결국 선택한 해결 방법이 Tool을 바꾸는 것이었습니다. ( 해결이라고 해도 되나 싶네요. ) 그렇게 다들 인텔리제이 인텔리제이 할 때 학생용 이메일을 잊어버렸고, 유료로 쓰자니 취준생에겐 꽤 부담이 되어서 그간 흐린 눈 했었는데요.이번에 방통대 편입을 하면서 새로운 학생용 메일이 생겼습니다! 👍 htt..
mapstruct
·
Project 댕린이집
📌 Entity와 DTO기본적인 개념에 대해 다시 한 번 복습해보겠습니다.Entity엔티티는 데이터베이스 테이블에 매핑되는 객체입니다.주로 데이터베이스의 상태를 나타내고 비즈니스 로직을 포함할 수 있습니다.보통 JPA(Java Persistence API)와 함께 사용되어 데이터베이스와 상호 작용합니다.데이터베이스의 구조를 반영하고, 데이터베이스 연산(CRUD)을 수행하는 데 사용됩니다.DTODTO는 데이터를 전송하기 위한 객체입니다.주로 클라이언트와 서버 간의 통신에서 사용됩니다.클라이언트로부터 받은 요청이나 서버에서 보내는 응답에 사용됩니다.엔티티와는 달리 비즈니스 로직을 포함하지 않으며, 주로 데이터 전송을 위한 필드를 갖습니다.  📌MapStruct자바 언어용 객체-객체 매핑 라이브러리입니다...
[트러블슈팅] PropertyValueException : UserDTO 생성과 @JsonProperty
·
Project 댕린이집
공부를 안한 게 아니고요...날마다 일어나는 새로운 오류에 정신을 못차리고 있습니다. 이제 회원관리 구현하는데 이게 무슨...ㅠㅠ아무튼 며칠 시달리다가 겨우 해결한 오류를 기록해보겠습니다. 일단 회원가입 기능을 구현하는데 react에서 axios를 사용해 POST 메서드로 요청을 보내면 계속 PropertyValueException 오류가 났습니다.   에러 메세지 org.hibernate.PropertyValueException: not-null property references a null or transient value : com.example.demo.entity.UserEntity.email 디버깅을 해보면 값이 안들어오고 죄다 null인 모습을 볼 수 있습니다..그 와중에 password는..
[트러블슈팅] HttpMediaTypeNotSupportedException
·
Project 댕린이집
에러 메세지 Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/x-www-form-urlencoded;charset=UTF-8' is not supported]  회원가입 로직을 테스트하는 중에 해당 문제가 발생했습니다.클라이언트에서 POST 방식으로 요청을 보낼 수 있는 API를 만들어서 전달했는데, 요청 시 아래와 같은 Exception이 발생하는 이슈입니다.   원인 해당 코드에서는 객체를 JSON 형식으로 전송하려고 하는 반면, 요청의 콘텐츠 타입이 'application/x-www-form-urlencoded'로 설정되어 있는 것이 원인입니다. RestAPI의 경우 보통 JS..
덧칠하기 / 실패율 / 옹알이(2) / [1차] 다트게임 / 로또의 최고 순위와 최저 순위
·
프로그래머스/1단계
1️⃣ 덧칠하기 문제 설명 어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다. 넓은 벽 전체에 페인트를 새로 칠하는 대신, 구역을 나누어 일부만 페인트를 새로 칠 함으로써 예산을 아끼려 합니다. 이를 위해 벽을 1미터 길이의 구역 n개로 나누고, 각 구역에 왼쪽부터 순서대로 1번부터 n번까지 번호를 붙였습니다. 그리고 페인트를 다시 칠해야 할 구역들을 정했습니다. 벽에 페인트를 칠하는 롤러의 길이는 m미터이고, 롤러로 벽에 페인트를 한 번 칠하는 규칙은 다음과 같습니..
xoo | 수진