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

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