[스프링SPRING]관리자용 회원 리스트

MemberController.java 코드 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 관리자용 회원 목록 */
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String listGET(HttpSession session, Model model) throws Exception{
// 1. 관리자 세션 제어
String id = (String) session.getAttribute("id");
if(id == null || !(id.equals("admin"))){
l.info("C: 관리자아닌 접근 ID - "+id);
return "redirect:/member/main";
}

// 2. 서비스 - 회원 목록 가져오는 동작
//List<MemberVO> memberList = service.getMemberList();

// 3. 정보 저장 -> 뷰(/member/memberlist.jsp) -> (Model 객체 )
model.addAttribute("memberList", service.getMemberList());

// 4. 페이지이동
return "/member/memberList";
}




main.jsp 뷰에 연결

  • main.jsp에서 관리자용 회원목록으로 가는 링크 연결하고 뷰 생성
1
2
3
4
5
6
7
8
9
10
11
<!-- 관리자일때만 메뉴확인가능 -->
<%
if(id != null){
if(id.equals("admin")){ %>
<input type="button" value="회원전체목록(관리자용)" class="btn" onclick="location.href='/test/member/list'">
<input type="button" value="상품전체목록(관리자용)" class="btn" onclick="location.href='/test/member/adminGoodsList'">
<input type="button" value="주문전체목록(관리자용)" class="btn" onclick="location.href='/test/member/adminOrderList'">
<%
}
}
%>




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
<body>
<%
//1. 로그인세션제어(관리자는 제외)
String id = (String) session.getAttribute("id");//다운캐스팅
if(id == null || !id.equals("admin")){ //순서바뀌면 에러발생하므로 항상 null 먼저 비교할 것
response.sendRedirect("/test/member/main");
}
%>
<h2 style="text-align: center;">회원목록</h2>
<table border="1">
<tr>
<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.userid}"></c:out></td>
<td><c:out value="${mb.userpw}"></c:out></td>
<td><c:out value="${mb.username}"></c:out></td>
<td><c:out value="${mb.useremail}"></c:out></td>
<td><c:out value="${mb.regdate}"></c:out></td>
<td><c:out value="${mb.updatedate}"></c:out></td>
</tr>
</c:forEach>
</table>
<input type="button" value="메인으로" class="btn" onclick="location.href='/test/member/main'">

</body>




MemberService.java 인터페이스에 메서드 추가

여기서 List는 java.util에 있는 리스트이다. import java.util.List;를 임포트해주면 된다.

1
2
//관리자용 회원목록
public List<MemberVO> getMemberList();




MemberServiceImpl.java 메서드 오버라이딩 코드 추가

  • 굳이 변수생성하여 담을 필요없이 바로 리턴하면 된다.
1
2
3
4
5
6
7
//관리자용 회원목록
@Override
public List<MemberVO> getMemberList() {
//List<MemberVO> memberList = mdao.getMemberList();
//return memberList;
return mdao.getMemberList();
}




MemberDAO.java 인터페이스에 메서드 추가

1
2
//회원정보리스트 출력
public List<MemberVO> getMemberList();




MemberDAOImpl.java 메서드 오버라이딩 코드 추가

  • 바로 리턴에 보낼 수 있으나 굳이 변수에 담은 이유는 캐스팅이 필요없음을 보여주고 콘솔에 출력하여 확인하고자함이다.
1
2
3
4
5
6
7
8
9
10
//관리자용 회원목록
@Override
public List<MemberVO> getMemberList() {
//while문 대신 selectList하면 됨! 세상간단!
List<MemberVO> memberList = sqlSession.selectList(namespace+".memberList");
System.out.println("DAO: getMemberList결과 - "+memberList);
return memberList;
//아래처럼 나타낼 수 있으나 변수에 담은 이유는 캐스팅이 필요없음을 보여주고 콘솔에 출력하고자함임
//return sqlSession.selectList(namespace+".memberList");
}




memberMapper.xml SQL쿼리 추가

  • 관리자빼고 회원목록 출력하는 쿼리작성
  • List를 넘겨줘야하는데 왜 MemberVO를 넘겨줄까?

1
2
3
<select id="MemberList" resultType="com.itwillbs.domain.MemberVO">
select * from tbl_member where userid not in('admin')
</select>