ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Servelt-JSP MVC01 (3) - 회원리스트 가져오기
    Web/Servlet-JSP 2023. 5. 26. 08:32

    회원가입이 성공하면, 회원 리스트를 보여주도록 만들어보자 

     

    1. 회원가입 성공 후  Redirect 

    if(cnt>0) { //가입성공
    			response.sendRedirect("/MVC01/memberList.do");
                
                //전에 가입 성공시 그냥 메세지 뜬 거 수정

    - 회원가입이 성공하면, Redirect를 통해 memberList.do를 처리할 컨트롤러와 클라이언트를 연결하자

     

    2. memberList.do 처리할 컨트롤러 + 모델 

    @WebServlet("/memberList.do")
    public class MemberListController extends HttpServlet {
    
    	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	
    		MemberDAO dao = new MemberDAO();
    		ArrayList<MemberVO> list = dao.getMemberList();

    > 리스트를 보여달라는 요청을 처리할 서블릿을 만들고, 모델과 연동해서 멤버 리스트를 화면에 출력하도록 하자

    public ArrayList<MemberVO> getMemberList() {
    		String sql = "SELECT * FROM member";
    		getConnect();
    		MemberVO mem;
    		ArrayList<MemberVO> members= new ArrayList<>(); 
    		try {
    			ps = conn.prepareStatement(sql);
    			rs =ps.executeQuery();
    			while(rs.next()) {
    			int num = rs.getInt("num");
    			String id = rs.getString("id");
    			String pass= rs.getString("pass");
    			String name = rs.getString("name");
    			int age = rs.getInt("age");
    			String email = rs.getString("email");
    			String phone = rs.getString("phone");
    			mem = new MemberVO(num,id,pass,name,age,email,phone);
    			//num들어간 생성자 있었던 이유!
    			members.add(mem);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			dbClose();
    		}
    		
    		return members;
    	}

    > DAO는 DB에 테이블을 읽어오는데, 이때 실행된 sql의 결과는 (ps.executeQuery()) 

       ResultSet으로 반환되고, ResultSet은 iterator처럼 결과를 행별로 한줄 한줄 읽어온다.

    > rs.next()로 읽어온 결과를 다시 VO객체에 담고, 이를 ArrayList에 담아 서블릿으로 return하자

    for(MemberVO m : list)
    {
     out.println("<td>"+m.getPass() +"</td>");
     out.println("<td>"+m.getName() +"</td>");
     out.println("<td>"+m.getAge() +"</td>");
     out.println("<td>"+m.getEmail() +"</td>");
     out.println("<td>"+m.getPhone() +"</td>");
                }

     

    3. 인코딩 설정하기

     

    회원리스트를 DAO로 List로 받아서 PrintWriter로 출력하는 부분까지 만들었다.

    사용자의 한글 입력을 서버에서 정확하게 받기 위해서 request에서 인코딩 설정을 해줬던 것 처럼,

    response도 적절한 인코딩 처리가 필요하다.

     

    - 서버에서 클라이언트 브라우저로 데이터 내보낼 브라우저는 인코딩 정보등을 모른다.

    - 서버가 클라이언트에게 응답하기 전에 어떤 유형에 데이터를 내려보낼 것인지 설정해야함

       이를 MIME TYPE이라

    - response.setContentType("text/html;charset=utf-8"); 를 통해 설정가능

    - PrintWriter 등 아웃풋스트림 만들기 이전에 설정해두자.

     

    추가로 회원가입 버튼을 추가해서 memberList에서 회원가입을 바로 할 수 있는 버튼을 만들어 두자!

    out.println("<a href='member/memberRegister.html'>회원가입</a>");

    a태그로 회원가입 버튼? 밑에 추가했다. 

     

    - 정리 

    회원리스트 가져오기를 통해 회원가입과 반대로 DAO에 수집된 데이터를 다시 클라이언트에게 보내는 작업 한 것이다.

     - DAO(모델)가 DB로 데이터 읽어서 VO인스턴스를 만들고 -> 컨트롤러에 넘긴다. (회원가입과 반대)  

     

    > 클라이언트 요청 Redirect : memberList.do로 보내기 

    > MemberListController에서 DAO에 저장된 데이터 VO의 list로 꺼내온 값 읽어서 내보내기 : MIME TYPE설정

    > DAO는 DB에 저장된 값 읽어서 ResultSet으로 얻어옴 이를 다시 읽어서 VO List로 저장해서 return

    > MemberList.do에서 회원가입화면으로 돌아갈 수 있도록 a태그 추가

     

     

     

    참고자료- 인프런 강의 나프1탄 - 박매일

Designed by Tistory.