<문제점>
<추가 하고 싶은 기능>
*분명 배운 부분이다. 프로젝트 포스팅 끝나면 다른 프로젝트로 진행 시키자
===================================================
페이지 이동 시키는건 컨트롤러에서 get으로 다 이동 시킨다.
예를들면
@RequestMapping(value = "/member/memberRegist", method = RequestMethod.GET)
public String MemberRegist( Model model) {
return "member/memberSignUp";
}
JSP에서 form으로 넘어온 값을 받아올 차례 (controller)
값을 ModelAttribute로 받아오고 비밀번호를 RequestParam로 따로 빼왔는데 이제와서 생각해보니
dto.getPw(); 로 빼와도 되는거였다. 아니 왜 짬뽕으로 섞었지?? 대체 무슨 생각으로 코딩을 한거지??
@RequestMapping(value = "/member/join", method = RequestMethod.POST)
public String join(Model model, @ModelAttribute MemberDTO dto, @RequestParam String pw) {
//msg를 jsp에 전달하기 위해 model을 이용했다.
String plain ="";
String hash ="";
BCryptPasswordEncoder en = new BCryptPasswordEncoder();
logger.info("회원 정보 입력 값 = "+dto.getAddress());
logger.info("회원가입 페이지");
plain = pw;
logger.info("평문"+plain);
hash = en.encode(plain); //암호화
logger.info("암호문"+hash);
dto.setPw(hash);
logger.info("회원 정보 입력 값 = "+dto.getPw());
String msg = "회원 가입에 실패했습니다. 잠시 후 다시 시도해주세요";
String page = "redirect:/member/MemberLogin";
if(service.join(dto) > 0) {
msg = "회원 가입 성공";
page = "member/MemberLogin";
dao.insertDefaultProfile(dto.getMember_id());
}
model.addAttribute("regist_msg", msg);
return page;
}
회원가입할때 비밀번호를 암호화 시켜서 넣어줬다.
암호화 메서드
BCryptPasswordEncoder en = new BCryptPasswordEncoder();
en.encode(pw); 를 넣어주면 암호화 된다.
service
public int join(MemberDTO dto) {
return dao.join(dto);
};
Dao (인터페이스)
int join(MemberDTO dto);
mapper
여기 withdraw 부분도 기본 0으로 설정되어 있어서 안 넣어줘도 되었다.
<!--회원가입 -->
<insert id="join" parameterType="member">
INSERT INTO member(member_id,pw,name,birth_date,address,email,phone,withdraw, location)
VALUES(#{member_id},#{pw},#{name},#{birth_date},#{address},#{email},#{phone},'0', #{address})
</insert>