본문으로 바로가기

[JSP개발] 모든 회원보기 추가

category 코딩/JSP 2016. 12. 7. 09:00







1. 개요







프로젝트를 실행시키면 상단에 회원보기 메뉴가 있다. 이번에는 회원보기 메뉴를 구현할 것이다. 회원보기의 경우 관리자로 로그인해야만 볼 수 있도록 할 것이다. 추가된 Java와 JSP는 위와 같다.


여기에서는 단순히 관리자 아이디를 이용하는 방법으로 하였는데, 다른 방법으로는 테이블에 권한 칼럼을 추가하여 관리자 권한을 주는 방법도 있다. 



■ Java

  • MemberListAction.java : 모든 회원정보를 보여주는 Action이다.


 JSP

  • MemberListForm.jsp : 회원보기 메뉴를 클릭 시 보여지는 JSP. 모든 회원정보를 보여준다.




2. 소스 코드



 작업 순서


1. admin이라는 아이디로 관리자 계정을 생성한다.

2. DAO에 회원정보를 가져오는 메서드 getMemberList( )를 추가한다.

3. 회원정보를 보여줄 Action인 MemberListAction클래스를 생성한다.

4. 프로퍼티 파일에 명령어와 Action을 등록한다.

5. 모든 회원정보를 보여줄 MemberListForm.jsp을 만든다.

6. Header.jsp의 메뉴를 수정한다.



 MemberDAO.java 


관리자 계정을 만든 후 MemberDAO에 회원정보를 가져오는 메서드 getMemberList( )를 추가한다.




getMemberList( )는 모든 회원정보를 ArrayList로 넘겨준다. 192줄에 회원정보를 담을 ArrayList를 생성했다. 




쿼리를 실행하고 가져온 회원정보를 while문을 이용해 ArrayList에 담는다.



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
/**
     * 모든 회원정보를 가져온다.
     * @return ArrayList<MemberBean> : 회원 List를 리턴한다.
     */
    public ArrayList<MemberBean> getMemberList()
    {
        ArrayList<MemberBean> memberList = new ArrayList<MemberBean>();
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        MemberBean member = null;
        
        try {
            StringBuffer query = new StringBuffer();
            query.append("SELECT * FROM JSP_MEMBER");
            
            conn = DBConnection.getConnection();
            pstmt = conn.prepareStatement(query.toString());
            rs = pstmt.executeQuery();
            
            while (rs.next()) 
            {
                member = new MemberBean();
                member.setId(rs.getString("id"));
                member.setPassword(rs.getString("password"));
                member.setName(rs.getString("name"));
                member.setGender(rs.getString("gender"));
                member.setBirthyy(rs.getDate("birth").toString());
                member.setMail1(rs.getString("mail"));
                member.setPhone(rs.getString("phone"));
                member.setAddress(rs.getString("address"));
                member.setReg(rs.getTimestamp("reg"));
                memberList.add(member);
            }
            
            return memberList;
            
        } catch (Exception sqle) {
            throw new RuntimeException(sqle.getMessage());
        } finally {
            // Connection, PreparedStatement를 닫는다.
            try{
                if ( pstmt != null ){ pstmt.close(); pstmt=null; }
                if ( conn != null ){ conn.close(); conn=null;    }
            }catch(Exception e){
                throw new RuntimeException(e.getMessage());
            }
        }
    }
cs



 MemberListAction.java 




MemberListAction에서는 회원정보를 가져와서 request에 저장한다. request 저장된 회원정보는 MemberListForm.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
package jsp.member.action;
 
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import jsp.member.model.MemberBean;
import jsp.member.model.MemberDAO;
 
/**
 * 모든 회원정보를 보여주는 Action
 */
public class MemberListAction implements Action
{
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        ActionForward forward = new ActionForward();
        
        // 회원정보를 가져온다.
        MemberDAO dao = MemberDAO.getInstance();
        ArrayList<MemberBean> memberList = dao.getMemberList();
        
        // MemberListForm.jsp에 회원정보를 전달하기 위해 request에 MemberBean을 세팅한다.
        request.setAttribute("memberList", memberList);
 
        // request를 유지해야 하므로 setRedirect(false)로 지정한다.
        forward.setRedirect(false);
        forward.setNextPath("MemberListForm.do");
        
        return forward;
    }
}
cs



 MemberCommand.properties


프로퍼티 파일에는 아래 2개의 명령어와 Action을 등록한다.


1
2
MemberListForm.do=jsp.member.action.MemberFormChangeAction
MemberListAction.do=jsp.member.action.MemberListAction
cs



 MemberListForm.jsp


MemberListForm은 request 저장된 회원정보를 화면에 출력한다.


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
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.util.*" %>    
<%@ page import="jsp.member.model.MemberBean" %>
 
<%
    // MemberInfoAction에서 넘긴 회원정보를 추출한다.
    ArrayList<MemberBean> memberList = (ArrayList<MemberBean>)request.getAttribute("memberList");
%>
 
<html>
<head>
    <title>회원 리스트 - 관리자 화면</title>
    
    <style type="text/css">
        table{
            margin-left:auto; 
            margin-right:auto;
            border:3px solid skyblue;
        }
        
        td{
            border:1px solid skyblue
        }
        
        #title{
            background-color:skyblue
        }
    </style>
    
</head>
<body>
    <br><br>
    <b><font size="6" color="gray">전체 회원정보</font></b>
    <br><br>
    
    <table>    
        <tr align="center">
            <td id=title>아이디</td>
            <td id=title>비밀번호</td>
            <td id=title>이름</td>
            <td id=title>성별</td>
            <td id=title>생년월일</td>
            <td id=title>이메일</td>
            <td id=title>전화</td>
            <td id=title>주소</td>
            <td id=title>가입일</td>
        </tr>
    
    <%
        for( MemberBean member : memberList){
    %>            
        <tr>
            <td><%=member.getId() %></td>
            <td><%=member.getPassword() %></td>
            <td><%=member.getName() %></td>
            <td><%=member.getGender() %></td>
            <td><%=member.getBirthyy() %></td>
            <td><%=member.getMail1() %></td>
            <td><%=member.getPhone() %></td>
            <td><%=member.getAddress() %></td>
            <td><%=member.getReg() %></td>
        </tr>
    <%%>    
    </table>
 
    
</body>
</html>
cs



 Header.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
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<html>
<head>
    <title>상단 영역</title>
    
    <link rel="stylesheet" href="css/bootstrap.min.css">
    
    <style type="text/css">
        #wrap{
            text-align: center;
            width: 800px;
            height: 150px;
        }
    </style>
    
    <script type="text/javascript">
        
        function changeView(value){
            
            if(value == "0"// HOME 버튼 클릭시 첫화면으로 이동
            {
                location.href="MainForm.do";
            }
            else if(value == "1"// 로그인 버튼 클릭시 로그인 화면으로 이동
            {
                location.href="LoginForm.do";
            }
            else if(value == "2"// 회원가입 버튼 클릭시 회원가입 화면으로 이동
            {
                location.href="JoinForm.do";
            }
            else if(value == "3"// 로그아웃 버튼 클릭시 로그아웃 처리
            {
                location.href="MemberLogoutAction.do";
            }
            else if(value == "4"// 내정보 버튼 클릭시 회원정보 보여주는 화면으로 이동
            {
                location.href="MemberInfoAction.do";
            }
            else if(value == "5")
            {
                location.href="MemberListAction.do";
            }
        }
    </script>
    
</head>
<body>
    <div id = "wrap">
        <p>
            <button class="btn btn-success" onclick="changeView(0)">HOME</button>
        <%
            // 로그인 안되었을 경우 - 로그인, 회원가입 버튼을 보여준다.
            if(session.getAttribute("sessionID")==null){ 
        %>
            <button id="loginBtn" class="btn btn-primary" onclick="changeView(1)">로그인</button>
            <button id="joinBtn" class="btn btn-primary" onclick="changeView(2)">회원가입</button>
            
        <%
            // 로그인 되었을 경우 - 로그아웃, 내정보 버튼을 보여준다.
            }else
        %>
            <button id="logoutBtn" class="btn btn-primary" onclick="changeView(3)">로그아웃</button>
            <button id="updateBtn" class="btn btn-primary" onclick="changeView(4)">내정보</button>
        <%    }    %>    
 
        <%
            // 관리자 로그인
            if(session.getAttribute("sessionID")!=null && session.getAttribute("sessionID").equals("admin")){ 
        %>
            <button id="memberViewBtn" class="btn btn-warning" onclick="changeView(5)">회원보기</button>
        <%    }    %>    
        
        </p>
    </div>
</body>
</html>
cs




3. 실행 결과





메인화면에서는 회원보기 메뉴가 사라졌다. 관리자로 로그인할 경우에만 메뉴가 나타난다.





관리자로 로그인하였을 경우 회원보기 메뉴가 나타난다.





회원보기 메뉴를 클릭할 경우 모든 회원 정보가 출력된다.




4. 소스코드 다운로드 (war 파일)


JSP_DEV.war


RSS구독 링크추가 트위터 이메일 구독