일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 식별자
- 인텔리제이 Web 애플리케이션
- java
- 자바의정석
- 연산자
- 산술 연산자
- StringBuffer
- 반복문
- SQL튜닝
- 함수
- SpringSecurity 로그아웃
- @PreAuthorize("isAuthenticated()")
- SQL
- 오버라이딩
- 예약어
- SQL 튜닝
- 객체지향
- 객체
- 스프링시큐리티 로그아웃
- 오버로딩
- 논리 연산자
- join
- 친절한 SQL 튜닝
- 상속
- spring 게시판 삭제
- 친절한 SQL
- 이클립스 설치
- 비교 연산자
- SpringSecurity 로그인
- 배열
Archives
- Today
- Total
gi_dor
회원가입 - 이메일 , 전화번호 <select> 본문
지금까지는 input type="text"
를 사용해 ' - ' 을 입력해서 입력했습니다
https://gi-dor.tistory.com/232
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class UserSignupForm {
private String tel1;
@Pattern(regexp="^[0-9]{4}$" , message = "유효한 전화번호 형식이 아닙니다")
private String tel2;
@Pattern(regexp="^[0-9]{4}$" , message = "유효한 전화번호 형식이 아닙니다")
private String tel3;
public User toEntity(PasswordEncoder passwordEncoder) {
User user = new User();
user.setId(id);
user.setPassword(passwordEncoder.encode(password));
user.setName(name);
user.setEmail(email1 + "@" + email2);
user.setTel(tel1 + "-" + tel2 + "-" + tel3 );
user.setZipCode(zipCode);
user.setAddress(address);
user.setAddressDetail(addressDetail);
return user;
}
}
public User registerUser(UserSignupForm form) {
if (userMapper.selectUserById(form.getId()) != null) {
throw new RuntimeException("이미 존재하는 아이디입니다: " + form.getId());
}
// 1 주민번호 : 1 이메일 : 다계정 일수도 있음
// if (userMapper.selectUserByEmail(form.getEmail()) != null) {
// throw new RuntimeException("이미 존재하는 이메일 입니다: " + form.getEmail());
// }
User user = form.toEntity(passwordEncoder);
userMapper.insertUser(user);
return user;
}
1개의 명의 : 1개의 이메일주소 : 다계정을 생각해서 이메일에 대해서는 중복값 입력되게 했습니다
@Mapper
public interface UserMapper {
void insertUser(User user);
}
<insert id="insertUser" parameterType="com.example.bookhub.user.vo.User">
insert into USER (
user_id ,
user_password ,
user_name ,
user_email ,
user_tel ,
user_zip_code ,
user_address,
user_address_detail
) values (
#{id} ,
#{password} ,
#{name} ,
#{email},
#{tel} ,
#{zipCode},
#{address},
#{addressDetail}
)
</insert>
public User toEntity(PasswordEncoder passwordEncoder) {
User user = new User();
user.setId(id);
user.setPassword(passwordEncoder.encode(password));
user.setName(name);
user.setEmail(email1 + "@" + email2);
user.setTel(tel1 + "-" + tel2 + "-" + tel3 );
user.setZipCode(zipCode);
user.setAddress(address);
user.setAddressDetail(addressDetail);
return user;
}
toEntity() 메서드로 user 클래스에 tel 에 저장되므로 쿼리문에 #{ tel } 을 사용하면됩니다.
@PostMapping("/join")
public String userJoin(@ModelAttribute("userSignupForm")
@Valid UserSignupForm form ,
BindingResult errors ) {
// 유효성 검사에서 오류가 발생했는지 확인하고,
// 오류가 있다면 사용자 등록 폼을 다시 보여주는 "user/registerForm" 뷰로 이동
if (errors.hasErrors()) {
return "user/registerForm";
}
try {
// UserService를 사용하여 사용자를 등록하고, 결과로 생성된 사용자 객체를 받는다
User user = userService.registerUser(form);
// 사용자 등록이 성공했을 경우, 사용자의 ID를 포함한 URL로 리다이렉트
return "redirect:/user/completed?id=" + user.getId();
} catch (RuntimeException ex) {
System.out.println(ex);
// 예외를 로깅하기
logger.error("에러 발생: ", ex); // 에러 레벨
String message = ex.getMessage();
if("id".equals(message)) {
errors.rejectValue("id", null, "사용 할 수 없는 아이디");
}
return "user/registerForm";
}
}
728x90
'Back_End > SpringBoot' 카테고리의 다른 글
회원가입 - 아이디 중복체크 비동기 ajax (4) | 2024.04.25 |
---|---|
암호화된 비밀번호 변경 (비동기) (0) | 2024.04.24 |
회원탈퇴 - SpringSecurity, MySQL , MyBatis (0) | 2024.04.22 |
마이페이지 ver.1- SpringSecurity, MySQL , MyBatis @PreAuthorize("isAuthenticated()") (0) | 2024.04.22 |
시큐리티로 로그인한 회원 정보 조회 , 수정 - SpringSecurity, MySQL , MyBatis (0) | 2024.04.17 |