회원가입 페이지에 성별을 선택할 수 있게 한다.
성별정보가 서버로 전달되고 처리되는 과정을 이해하고 정리한다.
성별데이터가 db에 정상적으로 저장되는지 확인한다.
<input>태그에 type 속성 중...생략
<div class="form-group col-md-4">
<label>성별:</label><br>
<label>
<input type="radio">남성
</label>
<label>
<input type="radio">여성
</label>
</div>
...생략
... 생략
<div class="form-group col-md-4">
<label>성별:</label><br>
<label>
<input type="radio" name="gender" value="남성">남성
</label>
<label>
<input type="radio" name="gender" value="여성">여성
</label>
</div>
... 생략
// 생략
String gender;
// 생략
// 생략
private String ...gender; // 변수는 name속성의 키와 동일한 명으로 지정한다.
// 생략
public User(UserAddRequest req){
username = req.getUsername();
password = req.getPassword();
phoneNumber = req.getPhoneNumber();
email = req.getEmail();
address1 = req.getAddress1();
address2 = req.getAddress2();
postcode = req.getPostcode();
// gender에 대한 변수 초기화 추가
gender = req.getGender();
}
public void add(UserAddRequest req){
userRepository.save(new User(req));
}
new User(req)를 통해 User에 대한 생성자를 호출하여 User 객체에 대한 인스턴스를 생성한다.
public User(UserAddRequest req){
username = req.getUsername();
password = req.getPassword();
phoneNumber = req.getPhoneNumber();
email = req.getEmail();
address1 = req.getAddress1();
address2 = req.getAddress2();
postcode = req.getPostcode();
gender = req.getGender();
}
생성된 인스턴스(User 객체)를 JPARepository를 상속받고 있는 userRepository의 save 메서드에 넣어주면, 실제 데이터베이스에 반영이 된다.
갑자기 위 과정을 다시한번 살펴보는 이유는 PublicController.java에서 post방식으로 데이터를 처리하는데 이곳에서 UserService에 있는 add메서드를 호출하기 때문이다.
@@ModelAttribute : 요청값들을 하나의 묶음으로 가져오겠다.(post형태로 받아온 값들을 UserAddRequest 있는 변수 값들에 맞춰서 가져온다.)
userService.add(req); : 사용자가 html 화면에서 입력 받고 전송한 값들이 req 라는 UserAddRequest 클래스 타입의 변수 안에 묶음으로 들어온다. 이것을 userService의 add 메소드의 매개변수로 전달 한다.
return "redirect:/index"; : 링크, get매핑방식으로 결과값 도출, 데이터를 처리하고 화면을 index.html로 되돌려준다.
// 생략
@PostMapping(value = "/sign-up")
public String signup(Model model, @ModelAttribute UserAddRequest req){
userService.add(req);
return "redirect:/index";
}
css없이 기본적인 radio속성을 이용해서 보기에 크게 아름답지는 않아도,
중요한 기능(벡엔드 처리과정)구현 에 집중했다.
성별 선택에 대해선 따로 과외를 받지 않아 솔직히 내가 만들지 못할줄 알았지만,
꼭 성공하겠다는 마음으로 도전했는데 결과가 좋아서 만족스럽다.
앞으로도 많은 과제에 있어서 내가 배우지 못했거나, 배운걸 응용해보는 시간이 많을텐데
결과에 상관없이 항상 최선을 다해 도전할 것이다.
현재 비밀번호가 사용자가 입력한 그대로 db에 저장되고 있다.
회원가입 페이지에서 핸드폰 번호 입력 양식 지정(11자리를 입력하지 않을경우 오류 발생)
주소, 우편번호에 대한 기능 추가(여러 웹사이트에서는 검색 기능을 이용하는것 같음)