회원 가입시 이메일 중복 확인 추가 (내 프로젝트에 적용)

Back-End/Spring 2019. 9. 10. 15:27
728x90
반응형

기존 - 회원가입전 인증번호를 이메일로 발송해 인증번호가 맞으면 회원가입 페이지로 이동해 회원가입 진행


변경 - 회원가입전 이메일 중복확인을해서 중복되지 않으면 인증번호를 이메일로 발송해 인증번호가 맞으면 

회원가입 페이지로 이동해서 회원가입을 진행시킨다.




email.jsp


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%@ include file="../include/header.jsp"%>
 
 
 
 
</head>
<%@ include file="../include/menu.jsp"%><br>
<body>
 
 
 
<table border="1" width="300" height="300" align= "center">
<center>
<span style="color: green; font-weight: bold;">이메일 인증 (이메일을 인증 받아야 다음 단계로 넘어갈 수 있습니다.)</span> <br> <br>    
        <br> <br>
        <div style="text-align:center;">
            <tr>        
                <td>
                <center>
        
  <!-- 넘겨받은 이메일이 없을시 출력되는 구문  -->


 <c:if test = "${e_mail == null}">
                        <div>
                        <form action="email_check.do" method="post">
                            이메일 : <input type="email" name="e_mail" placeholder="  이메일주소를 입력하세요. "><br><br
                                
                                <button type="submit" name="submit">중복확인</button></form>
                        </div>                                                    
        </c:if>
 


       
 
  <!-- 넘겨받은 이메일이 있을시에 출력되는 구문, 이메일 중복확인을 한 후에 다른 이메일로 변경하지 못하도록 이메일 값을 그대로 받아옴  -->

        <c:if test = "${e_mail != null}">
 <div>
                    <form action="auth.do${e_mail}" method="post">
                    
                    <center>
                        <br>이메일 : ${e_mail}
                        <br> <br>
                        <button type="submit" name="submit">이메일 인증받기 (이메일 보내기)</button>
 
                        </div>
                        </c:if>
        
                   
                    </td>
                </tr>
                    </center>
            </table>
        </form>
</center>
<br><br><%@ include file="../include/Botton.jsp"%>
</body>
</html>
cs




MemberController.java 중 일부


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
31
32
33
34
35
36
//이메일 중복확인을 하는 메소드
    @RequestMapping("/member/email_check.do")
    public ModelAndView email_check(String e_mail, HttpServletResponse response_equals) throws Exception    {
        
        memberservice.email_check(e_mail);
        
    if(memberservice.email_check(e_mail)) {
        
        response_equals.setContentType("text/html; charset=UTF-8");
        PrintWriter out_equals = response_equals.getWriter();
        out_equals.println("<script>alert('사용하실 수 있는 이메일 입니다.');</script>");
        out_equals.flush();
        
        ModelAndView mv = new ModelAndView();
        
        mv.setViewName("/member/email");
        
        mv.addObject("e_mail",e_mail);
        
        return mv;
        
        
    } else {
        response_equals.setContentType("text/html; charset=UTF-8");
        PrintWriter out_equals = response_equals.getWriter();
        out_equals.println("<script>alert('사용할 수 없는 이메일 입니다. 다른 이메일을 입력해주세요.'); history.go(-1);</script>");
        out_equals.flush();
        
    }
    
    ModelAndView mv = new ModelAndView();
    mv.setViewName("/member/email");
    
 
        return mv;
    }
cs




MemberServiceImpl.java 중 일부


1
2
3
4
5
6
7
8
9
//이메일 중복 확인
    @Override
    public boolean email_check(String e_mail) throws Exception{
        
        boolean result = memberdao.email_check(e_mail);
        
        return result;
        
    }
cs




MemberDAOImpl.java 중 일부


1
2
3
4
5
6
7
8
9
@Override
    public boolean email_check(String e_mail) throws Exception {
        String email
        =sqlSession.selectOne("member.email_check", e_mail);
    
       //조건식 ? true일때의 값 : false일때의 값
//이메일이 null이면 db에 저장되어 있지 않은 (중복되지 않은) 이메일이므로 true를 리턴함
        return (email==null) ? true : false;
        
    }
cs




memberMapper.xml 중 일부


1
2
3
4
5
<!-- 이메일 중복확인 관련 mapper-->
    <select id = "email_checkresultType="String">
        select e_mail from member
        where e_mail=#{e_mail}
    </select>    
cs




728x90
반응형
: