'Back-End'에 해당되는 글 288건

  1. 2019.09.25 상위 n개의 데이터만 뽑고 싶을 경우
  2. 2019.09.24 소셜 로그인 (네이버, 카카오톡, 페이스북) 후 프로필 확인 (내 프로젝트 적용)) 1
  3. 2019.09.23 프로필보기 기능 구현 (내 프로젝트에 적용)
  4. 2019.09.20 java에서 List형태로 저장한 값 출력 및 날짜형식 변환
  5. 2019.09.20 java에서 List null 체크
  6. 2019.09.19 회원정보보기 기능 구현 (내 프로젝트에 적용)
  7. 2019.09.17 회원 가입시 아이디 중복 확인 추가 (내 프로젝트에 적용)
  8. 2019.09.10 회원 가입시 이메일 중복 확인 추가 (내 프로젝트에 적용)

상위 n개의 데이터만 뽑고 싶을 경우

Back-End/Data Base 2019. 9. 25. 14:23
728x90
반응형

게시판에 있는 글들을 추천수 상위 10개만 뽑아서 출력하고 싶을 때 사용하는 쿼리


1
2
3
4
5
6
7
8
select member_bno, user_id, reg_date, viewcnt, title, rcnt, content, recommend 
from 
    (
    select recommend, member_bno, user_id, reg_date, viewcnt, title, rcnt, content
    from member_board
    order by recommend desc
    )
where rownum <= 10; //10개의 게시글만 출력한다는 뜻

cs



'





출처

http://blog.naver.com/PostView.nhn?blogId=nomadgee&logNo=220854618303

728x90
반응형
:

소셜 로그인 (네이버, 카카오톡, 페이스북) 후 프로필 확인 (내 프로젝트 적용))

Back-End/Spring 2019. 9. 24. 17:04
728x90
반응형

일반 로그인을 했을때 처럼 소셜 로그인을 한 후에 프로필을 확인할 수 있도록 구현.


카카오톡은 api 규정 때문에 id를 받을 수가 없어서 닉네임을 대신 받아옴.



login_form.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="google-signin-scope" content="profile email">
<meta name="google-signin-client_id" content="576736845363-o0474pib5q69qlcv6lm7o42hs6lu5u59.apps.googleusercontent.com">
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name = "viewport" content = "user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0,
width=device-width" />
 
<title>Insert title here</title>
 
</head>
<br><br><%@ include file="../include/header.jsp"%>
 
<table border="1" width="300">
 
<tr>
<td>
<br>
<center>
<span style="color:green; font-weight : bold;">회원 로그인</span>
</center>
 
 
<!-- 로그인창 -->
<form action ="normale_login.do" method = "post">
<center>
<br>
아이디 : <input type = "text" name="user_id" placeholder="  ID를 입력하세요 "><br><br>
비밀번호 : <input type = "password" name="member_pass" placeholder="  비밀번호를 입력하세요 "><br><br>
<button type = "submit" name = "submit" >로그인</button>
 
<br>
<br>
<div class = "row">
    <div class="col-xs-8">
        <div class="checkbox icheck">
        <label>
            <input type = "checkbox" name = "useCookie"> 로그인유지
        </label>
        </div>
    </div>
</div>
</center>
 
<center>
 
<html lang="ko">
<head>
<script type="text/javascript" src="https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js" charset="utf-8"></script>
</head>
<body>
<br>
<!-- 네이버아이디로로그인 버튼 노출 영역 -->
<div id="naverIdLogin"></div>
<!-- //네이버 아이디로 로그인 버튼 노출 영역 -->
 
<!-- 네이버 아이디로 로그인 초기화 Script -->
<script type="text/javascript">
    var naverLogin = new naver.LoginWithNaverId(
        {
            //클라이언트 id와 콜백 url (결과페이지)
            clientId: "DphfmDygX4WFkf8nghMJ",
            callbackUrl: "http://localhost/hansub_project/login_result",
            isPopup: false/* 팝업을 통한 연동처리 여부 */
            loginButton: {color: "green", type: 3, height: 40/* 로그인 버튼의 타입을 지정 */
        }
    );
    
    /* 설정정보를 초기화하고 연동을 준비 */
    naverLogin.init();
    
</script>
</center>
 
 
</center>
 
<center>
<!-- 카카오톡 아이디 연동해서 로그인 -->
<script src = "//developers.kakao.com/sdk/js/kakao.min.js"></script>
<a id="kakao-login-btn"></a>
<a href="http://developers.kakao.com/logout"></a>
<script type='text/javascript'>
 
Kakao.init('bd21082a499aaa79b4c08e01935a8a70'); //아까 카카오개발자홈페이지에서 발급받은 자바스크립트 키를 입력함
 
//카카오 로그인 버튼을 생성합니다. 
 
Kakao.Auth.createLoginButton({ 
    container: '#kakao-login-btn'
    success: function(authObj) { 
           Kakao.API.request({
 
               url: '/v1/user/me',
 
               success: function(res) {
 
                     console.log(res.id);//<---- 콘솔 로그에 id 정보 출력(id는 res안에 있기 때문에  res.id 로 불러온다)
 
                     console.log(res.kaccount_email);//<---- 콘솔 로그에 email 정보 출력 (어딨는지 알겠죠?)
 
                     console.log(res.properties['nickname']);//<---- 콘솔 로그에 닉네임 출력(properties에 있는 nickname 접근 
                             
                 // res.properties.nickname으로도 접근 가능 )
                     console.log(authObj.access_token);//<---- 콘솔 로그에 토큰값 출력
          
          var id = res.id;    //카카오톡 닉네임을 변수에 저장
          var kakaonickname = res.properties.nickname;    //카카오톡 닉네임을 변수에 저장
          var kakaoe_mail = res.kaccount_email;    //카카오톡 이메일을 변수에 저장함
         
          
 
          window.location.replace("http://" + window.location.hostname + ( (location.port==""||location.port==undefined)?"":":" + location.port) + "/hansub_project/home?kakaonickname="+kakaonickname+"kakaotalk"+"&kakaoe_mail="+kakaoe_mail);
      
                   }
                 })
               },
               fail: function(error) {
                 alert(JSON.stringify(error));
               }
             });
</script>
</center>
 
 
<!-- 페이스북 아이디를 연동해서 로그인 -->
 
 <center>
<button type"button" id"loginBtn" ><img src="C:/img/facelogin.png"/>페이스북 로그인</button>
 </center>
 
            <div id="access_token"></div>
            <div id="user_id"></div>
            <div id="name"></div>
            <div id="email"></div>
            <div id="gender"></div>
            <div id="birthday"></div>
            <div id="id"></div>            
            
<script>
function getUserData() {
    /* FB.api('/me', function(response) {
        document.getElementById('response').innerHTML = 'Hello ' + response.name;
        console.log(response);
    }); */
    FB.api('/me', {fields: 'name,email'}, function(response) {
        
        var facebookname = response.name;    //페이스북 아이디를 변수에 저장함
        var facebooke_mail = response.email;    //페이스북 이메일을 변수에 저장함
        
        
        window.location.replace("http://" + window.location.hostname + ( (location.port==""||location.port==undefined)?"":":" + location.port) + "/hansub_project/home?facebookname="+encodeURI(facebookname)+"&facebooke_mail="+facebooke_mail);
 
    });
}
  
window.fbAsyncInit = function() {
    //SDK loaded, initialize it
    FB.init({
        appId      : '488986078336253'//페이스북 개발자 홈페이지에서 앱을 등록하고, 앱 id를 받아온다.
        cookie     : true,  // enable cookies to allow the server to access
                // the session
        xfbml      : true,  // parse social plugins on this page
        version    : 'v3.3'     // 페이스북 개발자 홈페이지에서 버전을 확인한 후 작성한다.
    });
  
    //check user session and refresh it
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {        //만약 정상적으로 실행되었다면 유저의 데이터를 가져온다.
            //user is authorized
            //document.getElementById('loginBtn').style.display = 'none';
            getUserData(); 
            
        
            
        } else {
            //user is not authorized
        }
    });
};
  
//load the JavaScript SDK
(function(d, s, id){
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.com/ko_KR/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document'script''facebook-jssdk'));
  
//add event listener to login button
document.getElementById('loginBtn').addEventListener('click'function() {
    //do the login
    FB.login(function(response) {
        if (response.authResponse) {
            access_token = response.authResponse.accessToken; //get access token
            user_id = response.authResponse.userID; //get FB UID
            console.log('access_token = '+access_token);
            console.log('user_id = '+user_id);
            //user just authorized your app
            //document.getElementById('loginBtn').style.display = 'none';
            getUserData();
        }
    }, {scope: 'email,public_profile,user_birthday',
        return_scopes: true});
}, false);
 
 
 
</script>
 
 
 
</form>
 
<br>
<!-- 아이디 찾기 -->
<form action ="find.user_id.do">
<center>
<button>아이디 찾기</button>
</center>
</form>
 
<br>
<!-- 비밀번호 찾기 -->
<form action ="find.member_pass.do">
<center>
<button>비밀번호찾기</button>
</center>
</form>
<br>
 
</td>
</tr>
</table>
 
 
<body>
<!-- 로그인 실패나 성공시 메시지를 받아서 출력하는 자바스크립트 구문 -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
    $(function(){
        var responseMessage = "<c:out value="${message}" />";
        if (responseMessage != ""){
            alert(responseMessage)
        }
    })
</script>
 
 
</body>
</html>
cs




login.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
<c:if test = "${sessionScope.navername != null}">
 
(네이버)${sessionScope.navername}님이 로그인 하셨습니다.<br><br>
 
<form action = "naver_logout.do" method = "post">
<button type = "submit" name = "submit">로그아웃</button></form><br><br>
 
<form action = "authentication.do" method = "post">
<button type = "submit" name = "submit">회원 인증하기 (인증을 해야 각종 기능들 사용 가능)</button></form><br><br>
 
<form action = "naver_member_profile.do" method = "post">
<button type = "submit" name = "submit">나의 프로필 확인</button></form><br><br>
 
</c:if>
 
 
<c:if test = "${sessionScope.kakaonickname != null}">
 
(카카오톡)${sessionScope.kakaonickname}님이 로그인 하셨습니다.<br><br>
 
<form action = "kakao_logout.do" method = "post">
<button type = "submit" name = "submit">로그아웃</button></form><br><br>
 
<form action = "authentication.do" method = "post">
<button type = "submit" name = "submit">회원 인증하기 (인증을 해야 각종 기능들 사용 가능)</button></form><br><br>
 
<form action = "kakao_member_profile.do" method = "post">
<button type = "submit" name = "submit">나의 프로필 확인</button></form><br><br>
 
</c:if>
 
 
 
<c:if test = "${sessionScope.facebookname != null}">
 
(페이스북)${sessionScope.facebookname}님이 로그인 하셨습니다.<br><br>
 
<form action = "facebook_logout.do" method = "post">
<button type = "submit" name = "submit">로그아웃</button></form><br><br>
 
 
<form action = "authentication.do" method = "post">
<button type = "submit" name = "submit">회원 인증하기 (인증을 해야 각종 기능들 사용 가능)</button></form><br><br>
 
<form action = "facebook_member_profile.do" method = "post">
<button type = "submit" name = "submit">나의 프로필 확인</button></form><br><br>
 
</c:if>
cs



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
<c:if test = "${sessionScope.user_id == null and sessionScope.navername == null and sessionScope.kakaonickname == null and sessionScope.facebookname == null and sessionScope.admin_id == null}">
 
<%

//url로 보낸 아이디를 세션에 저장하기 위해 변수에 저장함
String navername = request.getParameter("navername");
String kakaonickname = request.getParameter("kakaonickname");
String facebookname = request.getParameter("facebookname");
String normalname = request.getParameter("user_id");
String admin_id = request.getParameter("admin_id");
 
 
//url로 보낸 이메일를 세션에 저장하기 위해 변수에 저장함
String navere_mail = request.getParameter("navere_mail");
String kakaoe_mail = request.getParameter("kakaoe_mail");
String facebooke_mail = request.getParameter("facebooke_mail");
 
%>    
 
 
<%
//아이디를 세션에 저장
session.setAttribute("navername", navername);
session.setAttribute("kakaonickname", kakaonickname);
session.setAttribute("facebookname", facebookname);
session.setAttribute("normalname", normalname);
session.setAttribute("admin_id", admin_id);
 
 
//이메일을 세션에 저장
session.setAttribute("navere_mail", navere_mail);
session.setAttribute("kakaoe_mail", kakaoe_mail);
session.setAttribute("facebooke_mail", facebooke_mail);
 
cs










MemberController.java 중 일부 (각 소셜 로그인 별로 메소드를 만들어서 session에 있는 아이디 값을 넘겨서 회원 자료를 검색하게 함)


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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
 
      //회원의 아이디로 회원 프로필을 출력하는 메소드 (네이버)
        @RequestMapping(value = "naver_member_profile.do")
        public ModelAndView naver_member_profile(HttpSession session, Date join_date, MemberDTO dto) throws Exception{
            
            
            //세션에 저장되어 있는 회원의 아이디를 변수에 저장함
            String user_id =(String)session.getAttribute("navername");
            
            //데이터베이스에서 검색한 값들을 DTO타입에 LIST에 저장한다.
            java.util.List<MemberDTO> list = memberservice.member_profile(user_id);
            
            Map<String,Object> map = new HashMap<>();
            
            //map에 리스트를 저장해서 출력할 view로 이동시킨다.
            
            //list가 null이면 회원정보가 없는것이므로 경고창을 출력하도록 함
            
            ModelAndView mv = new ModelAndView();
            
            //if문에서 list null처리를 할때에는 isEmpty()를 사용해서 null체크후 처리를 해주어야 한다.
            //list안에 값이 들어있을때 실행되는 구문
                
                //join_date의 형식을 바꾸어야 하기 때문에 join_date만 따로 빼서 형식을 변경한 후에 따로 넘긴다.
                for (int i = 0; i<list.size(); i++) {
                    
                    join_date = list.get(i).getJoin_date();
                    
                }
                
                String re_join_date = new SimpleDateFormat("yyyy-MM-dd").format(join_date);
                
                map.put("re_join_date", re_join_date);
                
                map.put("list", list);
                
                mv.addObject("map",map);
                
                mv.setViewName("member/member_profile");
                
 
            return mv;
        }
        
        
            //회원의 아이디로 회원 프로필을 출력하는 메소드 (카카오톡)
            @RequestMapping(value = "kakao_member_profile.do")
            public ModelAndView kakao_member_profile(HttpSession session, Date join_date, MemberDTO dto) throws Exception{
                    
                    
                //세션에 저장되어 있는 회원의 아이디를 변수에 저장함
                String user_id =(String)session.getAttribute("kakaonickname");
                    
                //데이터베이스에서 검색한 값들을 DTO타입에 LIST에 저장한다.
                java.util.List<MemberDTO> list = memberservice.member_profile(user_id);
                    
                Map<String,Object> map = new HashMap<>();
                    
                //map에 리스트를 저장해서 출력할 view로 이동시킨다.
                    
                //list가 null이면 회원정보가 없는것이므로 경고창을 출력하도록 함
                    
                ModelAndView mv = new ModelAndView();
                    
                    //if문에서 list null처리를 할때에는 isEmpty()를 사용해서 null체크후 처리를 해주어야 한다.
                    //list안에 값이 들어있을때 실행되는 구문
                        
                        //join_date의 형식을 바꾸어야 하기 때문에 join_date만 따로 빼서 형식을 변경한 후에 따로 넘긴다.
                        for (int i = 0; i<list.size(); i++) {
                            
                            join_date = list.get(i).getJoin_date();
                            
                        }
                        
                        String re_join_date = new SimpleDateFormat("yyyy-MM-dd").format(join_date);
                        
                        map.put("re_join_date", re_join_date);
                        
                        map.put("list", list);
                        
                        mv.addObject("map",map);
                        
                        mv.setViewName("member/member_profile");
                        
 
                    return mv;
                }
            
            
            //회원의 아이디로 회원 프로필을 출력하는 메소드 (페이스북)
            @RequestMapping(value = "facebook_member_profile.do")
            public ModelAndView facebook_member_profile(HttpSession session, Date join_date, MemberDTO dto) throws Exception{
                    
                    
                //세션에 저장되어 있는 회원의 아이디를 변수에 저장함
                String user_id =(String)session.getAttribute("facebookname");
                    
                //데이터베이스에서 검색한 값들을 DTO타입에 LIST에 저장한다.
                java.util.List<MemberDTO> list = memberservice.member_profile(user_id);
                    
                Map<String,Object> map = new HashMap<>();
                    
                //map에 리스트를 저장해서 출력할 view로 이동시킨다.
                    
                //list가 null이면 회원정보가 없는것이므로 경고창을 출력하도록 함
                    
                ModelAndView mv = new ModelAndView();
                    
                    //if문에서 list null처리를 할때에는 isEmpty()를 사용해서 null체크후 처리를 해주어야 한다.
                    //list안에 값이 들어있을때 실행되는 구문
                        
                        //join_date의 형식을 바꾸어야 하기 때문에 join_date만 따로 빼서 형식을 변경한 후에 따로 넘긴다.
                        for (int i = 0; i<list.size(); i++) {
                            
                            join_date = list.get(i).getJoin_date();
                            
                        }
                        
                        String re_join_date = new SimpleDateFormat("yyyy-MM-dd").format(join_date);
                        
                        map.put("re_join_date", re_join_date);
                        
                        map.put("list", list);
                        
                        mv.addObject("map",map);
                        
                        mv.setViewName("member/member_profile");
                        
 
                    return mv;
                }
        
cs




Service, DAO, Mapper, 프로필 출력하는 view 부분은 일반 로그인해서 프로필을 확인하는 부분과 동일하므로 생략함 (앞 글에 있음)





728x90
반응형
:

프로필보기 기능 구현 (내 프로젝트에 적용)

Back-End/Spring 2019. 9. 23. 13:57
728x90
반응형

로그인을 한 후에 "나의 프로필 확인" 버튼을 누르면 회원가입할때 작성한 나의 정보들이 표시되는 페이지로 이동해서


나의 프로필 정보가 출력된다.



로그인 페이지에 "나의 프로필 확인" 버튼을 추가함.


login.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<%@ 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>
</head>
<%@ include file="header.jsp"%>
 
 
<body>
<br>
<!-- 세션에 id값이 저장되어 있는 경우 로그아웃 버튼과 로그인한 아이디가 출력되도록 코드를 작성함 -->
 
<c:if test = "${sessionScope.user_id != null}">
 
(일반)${sessionScope.user_id}님이 로그인 하셨습니다. <br><br>
 
<form action = "logout.do" method = "post">
<button type = "submit" name = "submit">로그아웃</button></form><br><br>
 
<form action = "member_profile.do" method = "post">
<button type = "submit" name = "submit">나의 프로필 확인</button></form><br><br>
 
 
</c:if>
 
 
<c:if test = "${sessionScope.navername != null}">
 
(네이버)${sessionScope.navername}님이 로그인 하셨습니다.<br><br>
 
<form action = "naver_logout.do" method = "post">
<button type = "submit" name = "submit">로그아웃</button></form><br><br>
 
<form action = "authentication.do" method = "post">
<button type = "submit" name = "submit">회원 인증하기 (인증을 해야 각종 기능들 사용 가능)</button></form><br><br>
 
<form action = "member_profile.do" method = "post">
<button type = "submit" name = "submit">나의 프로필 확인</button></form><br><br>
 
</c:if>
 
 
<c:if test = "${sessionScope.kakaonickname != null}">
 
(카카오톡)${sessionScope.kakaonickname}님이 로그인 하셨습니다.<br><br>
 
<form action = "kakao_logout.do" method = "post">
<button type = "submit" name = "submit">로그아웃</button></form><br><br>
 
<form action = "authentication.do" method = "post">
<button type = "submit" name = "submit">회원 인증하기 (인증을 해야 각종 기능들 사용 가능)</button></form><br><br>
 
<form action = "member_profile.do" method = "post">
<button type = "submit" name = "submit">나의 프로필 확인</button></form><br><br>
 
</c:if>
 
 
 
<c:if test = "${sessionScope.facebookname != null}">
 
(페이스북)${sessionScope.facebookname}님이 로그인 하셨습니다.<br><br>
 
<form action = "facebook_logout.do" method = "post">
<button type = "submit" name = "submit">로그아웃</button></form><br><br>
 
 
<form action = "authentication.do" method = "post">
<button type = "submit" name = "submit">회원 인증하기 (인증을 해야 각종 기능들 사용 가능)</button></form><br><br>
 
<form action = "member_profile.do" method = "post">
<button type = "submit" name = "submit">나의 프로필 확인</button></form><br><br>
 
</c:if>
 
 
<c:if test = "${sessionScope.admin_id != null}">
 
(관리자)${sessionScope.admin_id}님이 로그인 하셨습니다.<br><br>
 
<form action = "logout.do" method = "post">
<button type = "submit" name = "submit">로그아웃</button></form><br><br>
 
<form action = "member_profile.do" method = "post">
<button type = "submit" name = "submit">나의 프로필 확인</button></form><br><br>
 
</c:if>
 
 
 
 
<c:if test = "${sessionScope.user_id == null and sessionScope.navername == null and sessionScope.kakaonickname == null and sessionScope.facebookname == null and sessionScope.admin_id == null}">
 
<%
//url로 보낸 아이디를 세션에 저장하기 위해 변수에 저장함
String navername = request.getParameter("navername");
String kakaonickname = request.getParameter("kakaonickname");
String facebookname = request.getParameter("facebookname");
String normalname = request.getParameter("user_id");
String admin_id = request.getParameter("admin_id");
 
 
//url로 보낸 이메일를 세션에 저장하기 위해 변수에 저장함
String navere_mail = request.getParameter("navername");
String kakaoe_mail = request.getParameter("kakaonickname");
String facebooke_mail = request.getParameter("facebookname");
 
%>    
 
 
<%
//아이디를 세션에 저장
session.setAttribute("navername", navername);
session.setAttribute("kakaonickname", kakaonickname);
session.setAttribute("facebookname", facebookname);
session.setAttribute("normalname", normalname);
session.setAttribute("admin_id", admin_id);
 
 
//이메일을 세션에 저장
session.setAttribute("navere_mail", navere_mail);
session.setAttribute("kakaoe_mail", kakaoe_mail);
session.setAttribute("facebooke_mail", facebooke_mail);
 
 
if (navername == null && kakaonickname == null && facebookname == null && normalname == null && admin_id == null) {
    
%>
 
(guest)님 방문을 환영합니다.     <br>
                                <br>
                                
로그인을 하셔야 다른 기능을 정상적으로 이용하실 수 있습니다. <br>
        
    <%@ include file="../member/login_form.jsp"%><br>
    
<%
 
    } 
 
%>
    
    
    </c:if>
 
</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
37
38
39
40
41
42
43
    
//회원아이디로 해당 회원의 정보를 검색하는 메소드

        @RequestMapping(value = "member_profile.do")
        public ModelAndView member_profile(HttpSession session, Date join_date, MemberDTO dto) throws Exception{
            
            //세션에 저장되어 있는 회원의 아이디를 변수에 저장함
            String user_id =(String)session.getAttribute("user_id");
            
            //데이터베이스에서 검색한 값들을 DTO타입에 LIST에 저장한다.
            java.util.List<MemberDTO> list = memberservice.member_profile(user_id);
            
            Map<String,Object> map = new HashMap<>();
            
            //map에 리스트를 저장해서 출력할 view로 이동시킨다.
                 
            ModelAndView mv = new ModelAndView();
            
            //if문에서 list null처리를 할때에는 isEmpty()를 사용해서 null체크후 처리를 해주어야 한다.
            //list안에 값이 들어있을때 실행되는 구문
            if(!list.isEmpty()) {
                
                //join_date의 형식을 바꾸어야 하기 때문에 join_date만 따로 빼서 형식을 변경한 후에 따로 넘긴다.
                for (int i = 0; i<list.size(); i++) {
                    
                    join_date = list.get(i).getJoin_date();
                    
                }
                
                String re_join_date = new SimpleDateFormat("yyyy-MM-dd").format(join_date);
                
                map.put("re_join_date", re_join_date);
                
                map.put("list", list);
                
                mv.addObject("map",map);
                
                mv.setViewName("member/member_profile");
                
            }
            
            return mv;
        }
 cs




MemberServiceImpl.java 중 일부


1
2
3
4
5
6
//자신의 프로필을 볼 수 있게 하는 메소드
    @Override
    public List<MemberDTO> member_profile(String user_id) throws Exception{
        
        return memberdao.member_profile(user_id);
    }
cs




MemberDAOImpl.java 중 일부


1
2
3
4
5
6
7
    
    //회원의 프로필 정보를 리턴한다.
    @Override
    public List<MemberDTO> member_profile(String user_id) throws Exception {
        
        return sqlSession.selectList("member.member_profile", user_id);
    }
cs



memberMapper.xml 중 일부


1
2
3
4
5
6
7
    <!-- 회원 프로필 확인 mapper -->
 
    <select id = "member_profile" resultType="com.example.hansub_project.model.member.dto.MemberDTO">
    select user_id, e_mail, join_date
    from member
    where user_id=#{user_id}
    </select>
cs



데이터베이스에서 검색한 회원의 프로필 정보가 넘어가서 출력되는 페이지


member_profile.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
61
62
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="com.thoughtworks.qdox.parser.ParseException"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
 
</head>
<%@ include file="../include/header.jsp"%>
<%@ include file="../include/menu.jsp"%><br>
<body>
 
        <center>
        <br>
        <br>
        <br>
 
 
<c:if test = "${map.list != null}">
 
 
<center>
 
<span style="color: green; font-weight: bold;">나의 프로필</span> <br> <br>
 
<table border="1" width="300" height="250">
    
        <div style="text-align:center;">
            <tr>        
                <td>
                    
                    <center>
                        <div>    
    <c:forEach var = "member" items = "${map.list}"><!-- 컨트롤러에서 넘어온 map의 값 --> 
    
                            아이디 : ${member.user_id} <br><br>
                            
                            이메일 : ${member.e_mail} <br><br>
                            
                            가입날짜 : ${map.re_join_date} <br><br>
                            
                        </div>                        
                        
                        
                    </center>
                        
                    </td>
                </tr>
                </div>
                </c:forEach>
            </table>
            </center>
 
</c:if>
 
 
 
<br><br><%@ include file="../include/Botton.jsp"%>
</body>
</html>
cs





728x90
반응형
:

java에서 List형태로 저장한 값 출력 및 날짜형식 변환

Back-End/Spring 2019. 9. 20. 15:31
728x90
반응형

java에서 list형태에 저장한 DB의 값을 꺼내보기.


저장한 값중에 일부만 꺼내고 싶다면 아래처럼 for문을 사용해서 출력하면 됩니다.


그리고 출력한 후에 날짜 형식을 변환하려면 아래 처럼 SimpleDateFormat 타입 을 사용해서 날짜 형식을 변환시키면 된다.



-예시-


 

  String re_join_date = new SimpleDateFormat("yyyy-MM-dd").format(join_date);




-관련 예제-


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


//회원아이디로 해당 회원의 정보를 검색하는 메소드

    @RequestMapping(value = "/admin/find_member.do")
    public ModelAndView find_member_info(String user_id, MemberDTO dto, Date join_date) throws Exception{
        
        //데이터베이스에서 검색한 값들을 DTO타입에 LIST에 저장한다.
        java.util.List<MemberDTO> list = adminservice.find_member_info(user_id);     //넘길 데이터가 많기 때문에        
        
        Map<String,Object> map = new HashMap<>();
        
        
        //map에 리스트를 저장해서 출력할 view로 이동시킨다.
        
        //list가 null이면 회원정보가 없는것이므로 경고창을 출력하도록 함
        
        ModelAndView mv = new ModelAndView();
        

  //if문에서 list null처리를 할때에는 isEmpty()를 사용해서 null체크후 처리를 해주어야 한다.

        //list안에 값이 들어있을때 실행되는 구문

        if(!list.isEmpty()) {
            
            //join_date의 형식을 바꾸어야 하기 때문에 join_date만 따로 빼서 형식을 변경한 후에 따로 넘긴다.

            for (int i = 0; i<list.size(); i++) {
                
                join_date = list.get(i).getJoin_date();
                
            }
            

//날짜형식을 yyyy-mm-dd 형식으로 변경한 후에 String 타입의 변수에 저장해서 view에 넘겨준다.

            String re_join_date = new SimpleDateFormat("yyyy-MM-dd").format(join_date);
            
            map.put("re_join_date", re_join_date);
            
            map.put("list", list);
            
            mv.addObject("map",map);
            
            mv.setViewName("admin/member_info");
            
        }else {
            
            mv.addObject("message""회원정보가 없는 회원입니다.");
            
            mv.setViewName("admin/member_info");
        }
        
        
        
        return mv;
    }
       
cs




출처

https://m.blog.naver.com/PostView.nhn?blogId=roseiriss&logNo=220088938355&categoryNo=36&proxyReferer=https%3A%2F%2Fwww.google.com%2F

728x90
반응형
:

java에서 List null 체크

Back-End/Spring 2019. 9. 20. 14:04
728x90
반응형

List에서 null처리를 할때는 null을 쓰지 말고 isEmpty()를 사용하면 됩니다.


반환은 boolean으로 되고, List가 비어있으면 true, 값이 있으면 false를 리턴하게 되어 있습니다.


일반적으로 list에는 생성만 됬거나, 입력된 값이 없을 경우 []빈값으로 들어가게 되는데


흔히 list를 "list == null" 로 체크를 하게 되면 조건이 성립하지 못하게 됩니다.




예시코드


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

//회원아이디로 해당 회원의 정보를 검색하는 메소드

    @RequestMapping(value = "/admin/find_member.do")
    public ModelAndView find_member_info(String user_id, MemberDTO dto) throws Exception{
        
        //데이터베이스에서 검색한 값들을 DTO타입에 LIST에 저장한다.
        java.util.List<MemberDTO> list = adminservice.find_member_info(user_id);     //넘길 데이터가 많기 때문에        
        
        Map<String,Object> map = new HashMap<>();
        
        
        //map에 리스트를 저장해서 출력할 view로 이동시킨다.
        
        //list가 null이면 회원정보가 없는것이므로 경고창을 출력하도록 함
        
        ModelAndView mv = new ModelAndView();
        
        //if문에서 list null처리를 할때에는 isEmpty()를 사용해서 null체크후 처리를 해주어야 한다.
        
        if(!list.isEmpty()) {
            
            map.put("list", list);
            
            mv.addObject("map",map);
            
            mv.setViewName("admin/member_info");
            
        }else {
            
            mv.addObject("message", "회원정보가 없는 회원입니다.");
            
            mv.setViewName("admin/member_info");
        }
        
        
        
        return mv;
    }
cs




출처

https://woo-yaa.tistory.com/16

728x90
반응형
:

회원정보보기 기능 구현 (내 프로젝트에 적용)

Back-End/Spring 2019. 9. 19. 17:31
728x90
반응형

관리자로 로그인 했을때만 관리자 메뉴가 나오게 하고, 정보를 확인할 회원의 아이디를 입력한 후에 "확인" 버튼을 누르면 


해당 회원의 정보가 출력되고, 해당하는 회원이 없다면 경고창이 출력되도록 구현해보기



member_info.jsp (view)


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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="com.thoughtworks.qdox.parser.ParseException"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
 
</head>
<%@ include file="../include/header.jsp"%>
<%@ include file="../include/menu.jsp"%><br>
<body>
 
<!-- 회원정보에 없는 아이디를 입력할 시에 출력되는 경고창 -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(function(){
    var responseMessage = "<c:out value="${message}" />";
    if (responseMessage != ""){
        alert(responseMessage)
    }
})
</script>
 
 
        <center>
        <br>
        <br>
        <br>
        <span style="color: green; font-weight: bold;">회원 정보 검색</span> <br> <br>
        </center>
 
<!-- 회원의 아이디를 입력하면 해당 회원에 정보가 하단에 출력되게 함 -->
<form action = "find_member.do" method = "post">
<center>
회원 아이디 : <input type="text" name="user_id" placeholder="아이디를 입력하세요.">
<button type = "submit" name = "submit" >확인</button><br><br><br>
</center>
</form>
 
<c:if test = "${map.list != null}">
 
 
<center>
 
<span style="color: green; font-weight: bold;">해당하는 회원 정보</span> <br> <br>
 
<table border="1" width="300" height="250">
    
        <div style="text-align:center;">
            <tr>        
                <td>
                    
                    <center>
                        <div>    
    <c:forEach var = "member" items = "${map.list}"><!-- 컨트롤러에서 넘어온 map의 값 --> 
    
                            아이디 : ${member.user_id} <br><br>
                            
                            이메일 : ${member.e_mail} <br><br>
                            
                            가입날짜 : ${member.join_date} <br><br>
                            
                        </div>                        
                        
                        
                    </center>
                        
                    </td>
                </tr>
                </div>
                </c:forEach>
            </table>
            </center>
 
</c:if>
 
 
 
<br><br><%@ include file="../include/Botton.jsp"%>
</body>
</html>
cs




AdminController.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
37
38
39
40
41
42
43
44
45
46
47
48
//회원아이디로 해당 회원의 정보를 검색하는 메소드
    @RequestMapping(value = "/admin/find_member.do")
    public ModelAndView find_member_info(String user_id, MemberDTO dto, Date join_date) throws Exception{
        
        //데이터베이스에서 검색한 값들을 DTO타입에 LIST에 저장한다.
        java.util.List<MemberDTO> list = adminservice.find_member_info(user_id);     //넘길 데이터가 많기 때문에        
        
        Map<String,Object> map = new HashMap<>();
        
        
        //map에 리스트를 저장해서 출력할 view로 이동시킨다.
        
        //list가 null이면 회원정보가 없는것이므로 경고창을 출력하도록 함
        
        ModelAndView mv = new ModelAndView();
        
        //if문에서 list null처리를 할때에는 isEmpty()를 사용해서 null체크후 처리를 해주어야 한다.

        //list안에 값이 들어있을때 실행되는 구문

        if(!list.isEmpty()) {
            
            //join_date의 형식을 바꾸어야 하기 때문에 join_date만 따로 빼서 형식을 변경한 후에 따로 넘긴다.

            for (int i = 0; i<list.size(); i++) {
                
                join_date = list.get(i).getJoin_date();
                
            }
            
            String re_join_date = new SimpleDateFormat("yyyy-MM-dd").format(join_date);
            
            map.put("re_join_date", re_join_date);
            
            map.put("list", list);
            
            mv.addObject("map",map);
            
            mv.setViewName("admin/member_info");
            
        }else {
            
            mv.addObject("message""회원정보가 없는 회원입니다.");
            
            mv.setViewName("admin/member_info");
        }
        
        
        
        return mv;
    }
cs



AdminServiceImpl.java 중 일부


1
2
3
4
5
6
//회원 정보 검색 메소드
    @Override
    public List<MemberDTO> find_member_info(String user_id) throws Exception {
        
        return admindao.member_info(user_id);
    }
cs




AdminDAOImpl.java 중 일부


1
2
3
4
5
6
7
   //회원의 정보를 리턴함
    @Override
    public List<MemberDTO> member_info(String user_id) throws Exception {
        
        return sqlSession.selectList("admin.member_info", user_id);
    }
 
cs




adminMapper.xml 중 일부


1
2
3
4
5
6
<!-- 회원 정보 찾기 관련 mapper -->

    <select id="member_info" resultType="com.example.hansub_project.model.member.dto.MemberDTO">
        select user_id, e_mail, join_date
        from member
        where user_id=#{user_id}
    </select>
cs



-실행 화면-











728x90
반응형
:

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

Back-End/Spring 2019. 9. 17. 13:59
728x90
반응형

회원가입 페이지에서 아이디 "중복확인" 버튼을 누르면 중복된 아이디가 있을시에는 경고창이 출력되고,


중복된 아이디가 없을시에는 아이디를 사용할 수 있다고 출력됨.



join.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<%@ include file="../include/header.jsp"%>
<%@ include file="../include/menu.jsp"%><br>
<!-- 회원가입 페이지 -->
<body>
<center>
<table border="1" width="450" height="400">
    
        <br> <br>
        <center>
        <span style="color: green; font-weight: bold;">회원가입</span> <br> <br>
        
        <div style="text-align:center;">
            <tr>        
                <td>
                    
                        <!-- 받아온 아이디가 없을때, 즉 처음 이 페이지가 출력되었을 때-->
                        
                        <c:if test = "${user_id == null}">
                        <form action="join_id_check.do${e_mail}" method="post">
                    <center>
                        <div>    
                            아이디 : <input type="text" name="user_id" placeholder="  ID를 입력하세요. ">  <button type="submit" name="submit">중복확인</button>
                            
                            
                                                    
                        </div>
                        <br>
                        <div>
                            비밀번호 : <input type="password" name="member_pass"
                                placeholder="  비밀번호를 입력하세요. ">
                        </div>
                        <br>
                        <div>
                            인증받은 이메일 : ${e_mail}
                        </div>                        
                        
                        <!-- 이메일은 인증받은 이메일을 사용해야 하므로 컨트롤러에서 이메일을 가져와서 사용함 -->
                        <!-- 가져온후에 다시 컨트롤러로 넘긴후에 db에 저장하는 식으로 진행 -->
                        
                        <br> <br>
                        <button type="submit" name="submit">회원가입</button>
                    </center>
                        </div>
                    </td>
                </tr>
            </table>
            </center>
        </form>
                            </c:if>

                     <!-- 아이디 중복확인을 한 후에 아이디를 받아왔을 경우에 출력되는 부분 -->

                        <c:if test = "${user_id != null}">
                        <form action="join_check.do${user_id},${e_mail}" method="post">
                    <center>
                        <div>
                            아이디 : ${user_id}
                                                    
                        </div>
                        <br>
                        <div>
                            비밀번호 : <input type="password" name="member_pass"
                                placeholder="  비밀번호를 입력하세요. ">
                        </div>
                        <br>
                        <div>
                            인증받은 이메일 : ${e_mail}
                        </div>                        
                        
                        <!-- 이메일은 인증받은 이메일을 사용해야 하므로 컨트롤러에서 이메일을 가져와서 사용함 -->
                        <!-- 가져온후에 다시 컨트롤러로 넘긴후에 db에 저장하는 식으로 진행 -->
                        
                        <br> <br>
                        <button type="submit" name="submit">회원가입</button>
                    </center>
                        </div>
                    </td>
                </tr>
            </table>
            </center>
        </form>
                            </c:if>    
        </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
37
38
39
40
//id 중복확인을 하는 메소드
    @RequestMapping("/member/join_id_check.do{e_mail}")
    public ModelAndView id_check(String user_id, HttpServletResponse response_equals, @PathVariable String e_mail) throws Exception    {
        
        
        memberservice.join_id_check(user_id);
        
    //id가 기존 db에 저장되어 있지 않을 경우 실행되는 부분
    if(memberservice.join_id_check(user_id)) {
        
        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/join");
        
        mv.addObject("e_mail", e_mail);
        
        mv.addObject("user_id",user_id);
        
        return mv;
        
    //id가 기존 db에 저장되어 있을 경우 id가 중복된 것으므로 이쪽 구문이 실행된다.
    
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/join");
    
        return mv;
    }

cs



MemberServiceImpl.java 중 일부


1
2
3
4
5
6
7
8

//아이디 중복 확인
    @Override
    public boolean join_id_check(String user_id) throws Exception {
    
//참, 거짓을 판별해서 리턴함
        boolean result = memberdao.join_id_check(user_id);
        
        return result;
    }
cs



MemberDAOImpl.java 중 일부


삼항 연산자를 사용해서 user의 id가 기존에 저장되어 있는 데이터라면 false를 리턴하고,


기존에 저장되어 있지 않은 데이터라면 true를 리턴하게 한다.


1
2
3
4
5
6
7
8
9
@Override
    public boolean join_id_check(String user_id) throws Exception {
 
        String user_id1 = sqlSession.selectOne("member.join_id_check", user_id);
    
        //조건식 ? true일때의 값 : false일때의 값

        return (user_id1==null) ? true : false;
    }
    
cs



MemberMapper.xml 중 일부


1
2
3
4
5
    
<!-- 아이디 중복확인 관련 mapper-->

    <select id = "join_id_check" resultType = "String" >
        select user_id from member
        where user_id=#{user_id}

    </select>       
cs




728x90
반응형
:

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

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
반응형
: