Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

게으른 완벽주의자의 개발자 도전기

DB와 연결하여 데이터 이동하기2(회원목록페이지, status) 본문

servlet jsp

DB와 연결하여 데이터 이동하기2(회원목록페이지, status)

머리방울 2022. 7. 31. 22:33

회원 목록페이지

1)DAO 기능

private Connection conn; 
private PreparedStatement stmt;
private ResultSet rs;
private String sql;



목록페이지를 불러오는 것은 SELECT를 사용한다.

나는 selectMemberList라는 메소드를 만들었다. 



public List<MemberDTO> selectMemberList() {



(★회원 전체 목록은 회원 한사람을 불러오는게 아니라 여러 사람의

데이터를 불러오는것이기 때문에 List를 사용하여 한명씩 담는 작업을 한다!)

!!위치 주의하기!!

(자료형은 MemberDTO에 변수로 설정한 변수들을 사용할 것이기 때문에 DTO로)
List<MemberDTO> memberList = new ArrayList<>();

i) 쿼리문 작성
sql="SELECT

 ID

, NAME

, EMAIL

, TELL

  FROM MEMBER";

try {
 - 자바와 DB연결
conn = JDBCUtil.getConnection();

 - 쿼리를 준비
stmt = conn.prepareStatement(sql);

(?값 세팅의 순서지만 이번쿼리에는 ?가 없으니 생략)  

 - 쿼리를 실행 (select니까 executeQuery리턴값이 resultSet)
rs = stmt.executeQuery();

 ii) getString(데이터베이스에서의 콜론명) 쿼리에서 데이터 가져와


while(rs.next()) {
String id = rs.getString("ID");
String name = rs.getString("NAME");
String email = rs.getString("EMAIL");
String tell = rs.getString("TELL");

iii) 4개 값 받을 객체생성
MemberDTO member = new MemberDTO();

iv) 쿼리에서 받은거 member에 세팅 해

member.setId(id);
member.setName(name);
member.setEmail(email);
member.setTell(tell);



v) memberList에 추가 해
memberList.add(member);

}

}catch(Exception e) {
e.printStackTrace();
}finally {
JDBCUtil.close(rs, stmt, conn);
}

return memberList;

2) index.jsp

index.jsp로 곧바로 servlet으로 가도록 만들어 준다

 

<jsp:forward page="memberList.me"></jsp:forward>

3)Controller

if(command.equals("/memberList.me")) {



1) DAO에서 만든 메소드 사용하겠다. -> memberDAO.selectMemberList();
그런데 이걸 사용할 때 자료형을 List<MemberDTO> 변수명을 memberList으로 사용할게!
List<MemberDTO> memberList = memberDAO.selectMemberList();



2) 데이터 jsp로 내보내기
request.setAttribute("memberList", memberList);

page="member_list.jsp";
}

4) member_list.jsp 만들기( 순번 넣기)

DB에 member라는 데이터베이스를 만들었다는 전제하에 진행

<table>
<thead>
<tr>
<td>No</td>
<td>아이디</td>
<td>이름</td>
<td>이메일</td>
<td>연락처</td>
</tr>
</thead>
( when에는 목록에 데이터 없을 때  나올 조건 넣겠다)
<c:choose>
<c:when test="${memberList.size() eq 0}">
<tr>
<td colspan="5"> 조회된 데이터가 없습니다.</td>
</tr>

</c:when>
<c:otherwise>
<c:forEach var="member" items="${memberList }" varStatus="status">
<tr>



게시글 순번 넣기 (varStatus= status)
먼저 varStatus= status 넣어 순번을 넣을거라고 표기 한다.

<status의 종류>
1. ${status.index }
-순번이 0,1,2,3.4,5,6 이런식으로 0부터 순차적으로 숫자가 나온다.

먼저 작성한 글의 번호가 6이 된다.

2. ${status.count }
-순번이 1,2,3,4,5,6 이런식으로 순차적으로 적용된다.

먼저 작성한 글의 번호가 6이 된다.

3. ${memberList.size() - status.index } 
- 전체 작성글의 개수(총 7건이라 가정 하)에서

글의 index(0,1,2,3,4,5,6)를 빼서 숫자가 정해진다.

먼저 작성한 글의 번호가 1이 된다. 마지막 글번호가 7이 된다.




<td>
캡쳐되 화면을 보면 순서대로 적용된 내용을 볼 수 있다.
${status.index } / ${status.count } / ${memberList.size() - status.index } 

</td>
<td>
<a href="member_detail.me?id=${member.id }">${member.id }</a>

(아이디를 클릭하면 상세보기 페이지로 이동하도록 만들었다)
</td>
<td>
${member.name }
</td>
<td>${member.email }</td>
<td>${member.tell }</td>
</tr>
</c:forEach>


</c:otherwise>
</c:choose>


</table>
<div align="center">
<input type="button" value="가입하기" onclick="location.href='memberJoinForm.me';">
</div>