국비 59 - 전체 회원 조회

냐아암·2023년 8월 7일
0

국비

목록 보기
75/114

전체 회원 조회

<h3>회원 목록 조회</h3>

                <p>일정 시간 마다 비동기로 회원 목록(회원 번호, 이메일, 닉네임) 조회</p>

                <table border="1">
                    <thead>
                        <tr>
                            <th>회원 번호</th>
                            <th>이메일</th>
                            <th>닉네임</th>
                        </tr>
                    </thead>


                    <tbody id="memberList">

                        <tr>
                            <td>1</td>
                            <td>user01@kh.or.kr</td>
                            <td>유저일</td>
                        </tr>

                        <tr>
                            <td>2</td>
                            <td>user02@kh.or.kr</td>
                            <td>유저이</td>
                        </tr>

                        <tr>
                            <td>3</td>
                            <td>user03@kh.or.kr</td>
                            <td>유저삼</td>
                        </tr>

                    </tbody>
                </table>
// *** 일정 시간마다 회원 목록 조회 ***

function selectAll(){ // 회원 전체 조회 함수
    
    // ajax 코드
    $.ajax({
        url : "member/selectAll",
        dataType : "json", // 응답 데이터의 형식을 "json"으로 지정
                           // -> 자동으로 JS 객체로 변환됨
        success : function(list){
            // console.log(list);

            // 1) #memberList 내용 삭제
            const memberList = document.getElementById("memberList");
            memberList.innerText="";

            // 2) list를 for문을 이용해서 반복 접근
            for(let item of list){
                // item == 회원 1명의 정보가 담긴 JS 객체
                
                // 3) tr 요소 생성
                const tr = document.createElement("tr");

                // 4) td 요소 생성 + 내용 추가*3
                const td1 = document.createElement("td");
                td1.innerText= item.memberNo; // 회원 번호

                const td2 = document.createElement("td");
                td2.innerText= item.memberEmail; // 회원 이메일

                const td3 = document.createElement("td");
                td3.innerText= item.memberNickname; // 회원 닉네임

                // 5) tr요소에 td 요소 3개 추가
                tr.append(td1, td2, td3);

                // 6) memberList에 tr 추가
                memberList.append(tr);
            }
        },
        error : function(){
            console.log("오류 발생");
        }
    });

}

// 즉시 실행 함수
(function(){

    selectAll(); // 함수 호출 --> 회원 목록을 먼저 조회
    
    // window.setInterval(함수, 딜레이(ms))
    window.setInterval(selectAll, 10000); // 10초
    // 함수 이름만 작성 -> 함수 코드 대입
    // -> 10초마다 selectAll 함수 수행

    // setInterval()은 지연 -> 수행 -> 지연 -> 수행 .. 반복
    // --> 처음에 함수가 수행되지 않아서 공백인 상태가 있음
    // --> 그래서 맨 처음에 selectAll() 함수 호출함
})();

package edu.kh.community.member.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;

import edu.kh.community.member.model.service.MemberService;
import edu.kh.community.member.model.vo.Member;

@WebServlet("/member/selectAll")
public class selectAllServlet extends HttpServlet {
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		try {
			
			MemberService service = new MemberService();
			
			List<Member> memberList = service.selectAll();
			
			// GSON 라이브러리를 이용해서 JSON 형태로 변환 후 응답
			new Gson().toJson(memberList, resp.getWriter());
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}

}

/** 회원 목록 조회 service
	 * @return memberList
	 * @throws Exception
	 */
	public List<Member> selectAll() throws Exception {
		
		Connection conn = getConnection();
		
		List<Member> memberList = dao.selectAll(conn);
		
		close(conn);
		
		return memberList;
	}
/** 회원 목록 조회 DAO
	 * @param conn
	 * @return memberList
	 * @throws Exception
	 */
	public List<Member> selectAll(Connection conn) throws Exception {
		
		List<Member> memberList = new ArrayList<Member>();
		
		try {
			
			String sql = prop.getProperty("selectAll");
			
			stmt = conn.createStatement();
			
			rs = stmt.executeQuery(sql);
			
			
			while(rs.next()) {
				
				Member mem = new Member();
				
				mem.setMemberNo(rs.getInt(1));
				mem.setMemberEmail(rs.getString(2));
				mem.setMemberNickname(rs.getString(3));
				
				memberList.add(mem);
				
			}
			
		} finally {
			
			close(rs);
			close(stmt);
			
		}
		
		
		return memberList;
	}
<!-- 회원 목록 조회 -->
	<entry key="selectAll">
		SELECT MEMBER_NO, MEMBER_EMAIL, MEMBER_NICK
		FROM MEMBER
		WHERE SECESSION_FL = 'N'
		ORDER BY 1
	</entry>
profile
개발 일지

0개의 댓글