ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Servlet - JSP MVC01 (5) - 회원상세보기
    Web/Servlet-JSP 2023. 5. 26. 09:35

     

    회원 아이디를 누르면, 회원정보를 상세하게 볼 수 있는 페이지를 만들어보자.

     

    1. memberListController에 아이디별 <a>태그 추가 및 컨트롤러 만들기 

     

    out.println("<td><a href='/MVC01/memberContent.do?num="+m.getNum()+"'>"+m.getId() +"</a></td>");

     > 회원별 상세정보를 DB에서 꺼내와야한다 이때 회원을 구별하기 위한 정보가 필요하므로 num을 같이 넘기자.

     > memberContent.do를 받을 컨트롤러 memberContentController 서블릿을 추가하자

     

    2. num수집해서 DAO(모델)과 소통

    int num = Integer.parseInt(request.getParameter("num"));
    MemberDAO dao = new MemberDAO();
    MemberVO mem_inf = dao.memberContents(num);

    memberListController에서 넘어온 num을 수집해서 DAO에 넘긴다.  

    DAO를 통해 num에 맞는 회원 레코드를 VO객체로 받아서 이를 출력

    if(mem_inf != null) {
    			
    			pw.println("<tr>");
    			pw.println("<td colspan='2'>"+mem_inf.getName()+"회원의 상세보기</td>");
    			pw.println("</tr>");
    			
    			pw.println("<tr>");
    			pw.println("<td>번호</td>");
    			pw.println("<td>"+mem_inf.getNum()+"</td>");
    			pw.println("</tr>");
    			
    			pw.println("<tr>");
    			pw.println("<td>아이디</td>");
    			pw.println("<td>"+mem_inf.getId()+"</td>");
    			pw.println("</tr>");
    			
    			pw.println("<tr>");
    			pw.println("<td>비밀번호</td>");
    			pw.println("<td>"+mem_inf.getPass()+"</td>");
    			pw.println("</tr>");
    			
    			pw.println("<tr>");
    			pw.println("<td>이름</td>");
    			pw.println("<td>"+mem_inf.getName()+"</td>");
    			pw.println("</tr>");
    			
    		////

     

    3. DB에서 회원 레코드 꺼내서 전달하기

    public MemberVO memberContents(int num) {
    		MemberVO content=null;
    		String sql = "select * from member where num=?";
    		getConnect();
    		try {
    			ps = conn.prepareStatement(sql);
    			ps.setInt(1, num);
    			rs =ps.executeQuery();
    			if(rs.next()) {
    				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");
    				content = new MemberVO(num,id,pass,name,age,email,phone);
    			}else {
    				throw new Exception();
    			}
    		}catch(Exception e) {
    			e.printStackTrace();
    		}finally {
    			dbClose();
    		}
    		
    		
    		return content;
    	}

    > num을 조건으로 회원 레코드를 읽어와서 rs를 통해 VO객체 담고 이를 return 

     

    이제 회원리스트에서 id를 누르면 아래와 같이 나온다.

     

     

    4. 상세정보 창에 나온 나이, 이메일, 전화번호는 추후에 수정할 수 있도록 텍스트 박스로 수정하기 

                            pw.println("<tr>");
                            pw.println("<td>나이</td>");
    	               pw.println("<td><input type='text' name='age' value='"+mem_inf.getAge()+"'></td>");
    	               pw.println("</tr>");
    			
    			pw.println("<tr>");
    			pw.println("<td>이메일</td>");
    			pw.println("<td><input type='text' name='email' value='"+mem_inf.getEmail()+"'></td>");
    			pw.println("</tr>");
    			
    			pw.println("<tr>");
    			pw.println("<td>전화번호</td>");
    			pw.println("<td><input type='text' name='phone' value='"+mem_inf.getPhone()+"'></td>");
    			pw.println("</tr>");

    - input태그에 text타입을 추가하면 된다. 파라미터명은 VO와 일치시켜두자

     

     

     

    정리: 상세페이지라는 새로운 페이지를 만든 것 빼고는 앞에서 했던 흐름이 계속 반복된다.

             요청 -> 컨트롤러 -> VO <- DAO -> 응답  

     

Designed by Tistory.