Servlet쇼핑몰7: 회원전체목록조회(관리자기능)

main.jsp 생성

  • location.href='memberList.jsp' 에서 location.href='./MemberList.me'로 변경
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
<%//1.한글처리, 파라미터 
request.setCharacterEncoding("UTF-8");
String id = (String) session.getAttribute("id");//objectstring으로 다운캐스팅
String name = request.getParameter("name");
//1-1. id없이는 진입불가, id없는 경우 로그인페이지로 이동. 가상주소로 이동
if(id == null){
response.sendRedirect("./MemberLogin.me");
}
%>

<h3>아이디: <%=id %></h3>
<h3>아이디(session-EL표현식) : ${ sessionScope.id } </h3>

<input type="button" value="ITWILL게시판가기" class="btn" onclick="location.href='../board/boardList.jsp'">
<input type="button" value="회원정보조회" class="btn" onclick="location.href='./MemberInfo.me'">
<input type="button" value="회원정보수정" class="btn" onclick="location.href='./MemberUpdate.me'">
<input type="button" value="로그아웃" class="btn" onclick="location.href='./MemberLogout.me'">
<input type="button" value="회원탈퇴" class="btn" onclick="location.href='./MemberDelete.me'">

<!-- 관리자일때만 메뉴확인가능 -->
<% if(id != null){
if(id.equals("admin")){ %>
<input type="button" value="회원전체목록(관리자용)" class="btn" onclick="location.href='./MemberList.me'">
<%
}
}
%>




MemberFrontController.java의 doProcess()메서드 추가 코드 작성

1
2
3
4
5
6
7
8
9
10
11
	//16. 회원전체목록 조회
//trim() - 문자열데이터의 앞뒤공백제거
}else if(command.trim().equals("/MemberList.me")){
System.out.println("@@@@ Controller : 가상주소 /MemberList.me 실제주소: ./member/MemberList.jsp");
action = new MemberListAction();
try{
forward = action.execute(req, resp);
} catch(Exception e){
e.printStackTrace();
}
}




memberList.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
<%
//1. 로그인세션제어(관리자는 제외)
String id = (String) session.getAttribute("id");//다운캐스팅
if(id == null || !id.equals("admin")){ //순서바뀌면 에러발생하므로 항상 null 먼저 비교할 것
response.sendRedirect("./LoginForm.me");
}
//2. 회원정보를 저장
//request.setAttribute("memberList", memberList);
List<MemberBean> memberList = (List<MemberBean>)request.getAttribute("memberList");
//다운캐스팅
%>

<h2>마이페이지</h2>
<table border="1">
<tr>
<td>아이디</td>
<td>비밀번호</td>
<td>이름</td>
<td>나이</td>
<td>성별</td>
<td>이메일</td>
<td>회원가입일</td>
</tr>

<%//반복문
//ArrayList는 가변배열이므로 length가 없고 size가 존재한다.
//size()메서드는 배열의 요소의 갯수를 리턴
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>
<input type="button" value="메인으로" class="btn" onclick="location.href='./Main.me'">

el표현식으로 위의 출력값을 나타내보자.

  • 자바코드는 컴파일이 필요하지만 el태그가 훨씬 코드가 간결해진다

    1
    2
    3
    <c:forEach items="${memberList}" var="mb">	
    <c:out value="${mb.email}"></c:out>
    </c:forEach> --%>
  • 위의 자바코드를 el태그로 변경.

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
<%
//1. 로그인세션제어(관리자는 제외)
String id = (String) session.getAttribute("id");//다운캐스팅
if(id == null || !id.equals("admin")){ //순서바뀌면 에러발생하므로 항상 null 먼저 비교할 것
response.sendRedirect("./LoginForm.me");
}
//2. 회원정보를 저장
//request.setAttribute("memberList", memberList);
List<MemberBean> memberList = (List<MemberBean>)request.getAttribute("memberList"); //다운캐스팅

%>

<h2 style="text-align: center;">회원목록</h2>
<table border="1">
<tr>
<td>아이디</td>
<td>비밀번호</td>
<td>이름</td>
<td>나이</td>
<td>성별</td>
<td>이메일</td>
<td>회원가입일</td>
</tr>

<c:forEach items="${memberList}" var="mb">
<tr>
<td><c:out value="${mb.email}"></c:out></td>
<td><c:out value="${mb.pw}"></c:out></td>
<td><c:out value="${mb.name}"></c:out></td>
<td><c:out value="${mb.age}"></c:out></td>
<td><c:out value="${mb.gender}"></c:out></td>
<td><c:out value="${mb.email}"></c:out></td>
<td><c:out value="${mb.reg_date}"></c:out></td>
</tr>
</c:forEach>

</table>
<input type="button" value="메인으로" class="btn" onclick="location.href='./Main.me'">




MemberListAction.java 생성

  • trim() : 가져 온 문자열 데이터의 앞뒤 공백을 제거 -> 정확도 향상
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
public class MemberListAction implements Action {

@Override
public ActionForward execute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
System.out.println("@@@@ Action: MemberListAction안의 execute() 실행됨");
//1. 한글처리
req.setCharacterEncoding("UTF-8");
//2. 세션제어 ( 로그인 여부, 관리자인지 판단 )
HttpSession session = req.getSession();
String id = (String) session.getAttribute("id");
ActionForward forward = new ActionForward();
if(id == null || id.equals("admin")){
forward.setPath("./MemberLogin.me");
forward.setRedirect(true);
return forward;
}

//3. DB객체처리 -> getMemberList()메서드 구현
MemberDAO mdao = new MemberDAO();
List<MemberBean> memberList = mdao.getMemberList();

//4. 회원정보를 저장
req.setAttribute("memberList", memberList);

//5. jsp(view) 페이지로 이동
forward.setPath("./member/memberList.jsp");
forward.setRedirect(false); //forwarding방식 -false
return forward;
}
}




MemberDAO.java에 getMemberList()메서드 추가 코드 작성

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
//8.회원목록
//가능하면 list사용할때 데이터타입 명시하는 것이 좋다
public List<MemberBean> getMemberList(){
List<MemberBean> memberList = new ArrayList<MemberBean>(); //업캐스팅

try{
con = getCon();
sql = "select * from itwill_member";
pstmt = con.prepareStatement(sql);
//8-3. 실행 -> rs저장
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.setGender(rs.getString("gender"));
mb.setReg_date(rs.getTimestamp("reg_date"));

//리스트 한 칸에 회원 1명의 정보 저장
memberList.add(mb);
}
System.out.println("memberList검색완료");
}catch(Exception e){
e.printStackTrace();
}
return memberList;
}//end of getMemberList method