💡 핵심 요약 (TL;DR)
Javabean 5 : 관리자만 확인할 수 있는 회원목록페이지만들기의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
* add(mb)를 빼서 쓸때는 다운캐스팅을 해야지 사용할 수 있다.
ITWILL학원 : 25강 JSP기초 BY 정규태강사 1. main.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 <%//1.한글처리, 파라미터 request.setCharacterEncoding("UTF-8"); String id = (String) session.getAttribute("id");//object를 string으로 다운캐스팅 String name = request.getParameter("name"); //1-1. id없이는 진입불가, id없는 경우 로그인페이지로 이동 if(id == null){ response.sendRedirect("loginForm.jsp"); } %> <h2 > <%=id %>님 환영합니다.</h2 > <%=name %><br > <input type ="button" value ="회원정보조회" onclick ="location.href='memberinfo.jsp'" > <input type ="button" value ="회원정보수정" onclick ="location.href='updateForm.jsp'" > <input type ="button" value ="로그아웃" onclick ="location.href='logout.jsp'" > <input type ="button" value ="회원탈퇴" onclick ="location.href='deleteForm.jsp'" > <% if(id != null){ if(id.equals("admin")){ %> <input type ="button" value ="회원전체목록(관리자용)" onclick ="location.href='memberList.jsp'" > <% } } %>
이때 관리자메뉴확인 if조건문을 아래 한줄짜리 코드로 바꿔보자
1 2 3 4 5 6 7 8 <!-- 관리자일때만 메뉴확인가능 --> <% if (id.equals("admin" ) && id != null ){ %> <input type = "button" value="회원전체목록(관리자용)" onclick="location.href='memberList.jsp'" > <% } %>
1 2 3 4 5 6 7 8 <!-- 관리자일때만 메뉴확인가능 --> <% if (id != null && id.equals("admin" )){ %> <input type = "button" value="회원전체목록(관리자용)" onclick="location.href='memberList.jsp'" > <% } %>
2. 회원전체페이지 출력하는 memberList.jsp 생성 DB에서 모든 회원의 정보를 가져와서 페이지에 출력한다 이때, 관리자는 목록에 제외되어야한다.
순서
로그인세션제어(관리자는 제외)
DAO객체생성
회원목록을 가져오는 메서드 사용
ArrayList는 가변배열이므로 length가 없고 size가 존재한다.
size()메서드는 배열의 요소의 갯수를 리턴한다.
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 <% String id = (String) session.getAttribute("id" );if (id == null || !id.equals("admin" )){ response.sendRedirect("loginForm.jsp" ); } MemberDAO mdao = new MemberDAO ();mdao.getMemberList(); ArrayList memberList = mdao.getMemberList();%> <h2>마이페이지</h2> <table border = "1" > <tr> <td>아이디</td> <td>비밀번호</td> <td>이름</td> <td>나이</td> <td>성별</td> <td>이메일</td> <td>회원가입일</td> </tr> <% for (int i = 0 ;i<memberList.size(); i++){ MemberBean mb = (MemberBean) memberList.get(i); %> <tr> <td><%=mb.getId() %></td> <td><%=mb.getPw() %></td> <td><%=mb.getName() %></td> <td><%=mb.getAge() %></td> <td><%=mb.getGender() %></td> <td><%=mb.getEmail() %></td> <td><%=mb.getReg_date() %></td> </tr> <% } %> </table> %>
3. DAO객체에 getMemberList()메서드 생성
DB연결메서드 불러오기
SQL & pstmt 생성
실행 -> rs저장
데이터처리 :
4-1. 회원이 몇명인지 알지 못하므로 가변길이 배열을 생성 : 배열안에 자바빈을 넣어서 가져 갈 예정이다. 근데 데이터갯수를 몰라서 배열을 못만든다. 따라서 데이터형태 ArrayList로 가져갈거다.
ArrayList 여기서 e를 제네릭타입이라고 칭함
ArrayList<> 다이아몬드 오퍼레이터라고 칭함
mb는 MemberBean데이터타입인데 add(Object)가 들어가야한다 따라서 업캐스팅 (MemberBean -> Object)해서 넣어야한다.
add(mb)를 빼서 쓸때는 다운캐스팅을 해야지 사용할 수 있다.
4-2. DB테이블 결과 1행의 정보 모두를 MemberBean데이터타입으로 저장
4-3. 1행정보를 배열 한칸에 저장
finally 로 자원해제
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 public ArrayList getMemberList () { ArrayList memberList = new ArrayList (); try { con = getCon(); sql = "select * from itwill_member" ; pstmt = con.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()){ MemberBean mb = new MemberBean (); mb.setAge(rs.getInt("age" )); mb.setEmail(rs.getString("email" )); mb.setId(rs.getString("id" )); mb.setName(rs.getString("name" )); mb.setPw(rs.getString("pw" )); mb.setReg_date(rs.getTimestamp("reg_date" )); memberList.add(mb); } System.out.println("정보검색완료" ); } catch (SQLException e) { e.printStackTrace(); } finally { closeDB(); } return memberList; }
#TIL ITWILL(JAVA)