반응형

# MVC01_12 회원 상세보기

  • 회원 리스트에서 회원의 아이디를 클릭하면 상세보기 할 수 있도록 할 예정.

## MemberListController.java Servlet 수정

  • 회원 리스트 가져오는 항목에서 아이디에 태그 추가
out.println("<tr>");
out.println("<td>" + vo.getNum()+ "</td>");
// 상세보기
out.println("<td><a href='/MVC01/memberContent.do?num="+ vo.getNum()+"'>" + vo.getId()+ "</a></td>");
out.println("<td>" + vo.getPass()+ "</td>");
out.println("<td>" + vo.getName()+ "</td>");
out.println("<td>" + vo.getAge()+ "</td>");
out.println("<td>" + vo.getEmail()+ "</td>");
out.println("<td>" + vo.getPhone()+ "</td>");
out.println("<th><a href='/MVC01/memberDelete.do?num="+ vo.getNum()+"'>삭제</a></th>");
out.println("</tr>");

## MemberContentController.java Servlet 생성

  • kr.bit.controller 우 클릭 > New > Servlet 클릭 후 MemberContentController 이름 설정 후 Next > URL Mapping의 경우 memberContent.do 입력 후 Next > Service 만 클릭 하여 Finish.
package kr.bit.controller;

import java.io.IOException;
import java.io.PrintWriter;

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 kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;

@WebServlet("/memberContent.do")
public class MemberContentController extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)
							throws ServletException, IOException {
		int num = Integer.parseInt(request.getParameter("num"));
		
		MemberDAO dao = new MemberDAO();
		
		MemberVO vo = dao.memberContent(num);
		
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head>");
		out.println("<meta name='viewport' content='width=device-width, initial-scale=1'>");
		out.println("<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>");
		out.println("<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>");
		out.println("<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>");
		out.println("</head>");
		out.println("<body>");
		out.println("<table border='1' class='table table-bordered'>");
		if (vo != null) {
			// vo에 값 존재 시 상세보기 페이지 생성
			out.println("<tr>");
			out.println("<td colspan='2'>" + vo.getName() + "의 상세보기</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>번호</td>");
			out.println("<td>" + vo.getNum() + "</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>아이디</td>");
			out.println("<td>" + vo.getId() + "</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>비밀번호</td>");
			out.println("<td>" + vo.getPass() + "</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>나이</td>");
			out.println("<td>" + vo.getAge() + "</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>이메일</td>");
			out.println("<td>" + vo.getEmail() + "</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>전화번호</td>");
			out.println("<td>" + vo.getPhone() + "</td>");
			out.println("</tr>");		
		} else {
			out.println("<tr>");
			out.println("<td>일치하는 회원이 없습니다.</td>");
			out.println("</tr>");
		}
		out.println("</table>");
		out.println("</body>");
		out.println("</html>");
	}

}

## MemberDAO.java 에 회원 정보 가져오는 기능 추가

// 회원 상세보기 기능
	public MemberVO memberContent(int num) {
		String SQL = "select * from member where num = ?";
		getConnect();
		MemberVO vo = null;
		try {
			ps = conn.prepareStatement(SQL);
			ps.setInt(1, num);
			rs = ps.executeQuery();
			
			if (rs.next()) {
				// 데이터 존재 시 회원 한명의 데이터 묶기(VO)
				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");
				
				vo = new MemberVO(num, id, pass, name, age, email, phone);
			}
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			dbClose();
		}
		
		return vo; 
	}

## 회원정보를 수정할 수 있는 형태로 변경

  • 기존 코드에 input 태그 추가하여 진행
package kr.bit.controller;

import java.io.IOException;
import java.io.PrintWriter;

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 kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;

@WebServlet("/memberContent.do")
public class MemberContentController extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)
							throws ServletException, IOException {
		int num = Integer.parseInt(request.getParameter("num"));
		
		MemberDAO dao = new MemberDAO();
		
		MemberVO vo = dao.memberContent(num);
		
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head>");
		out.println("<meta name='viewport' content='width=device-width, initial-scale=1'>");
		out.println("<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css'>");
		out.println("<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>");
		out.println("<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js'></script>");
		out.println("</head>");
		out.println("<body>");
		out.println("<table border='1' class='table table-bordered'>");
		if (vo != null) {
			// vo에 값 존재 시 상세보기 페이지 생성
			out.println("<tr>");
			out.println("<td colspan='2'>" + vo.getName() + "의 상세보기</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>번호</td>");
			out.println("<td>" + vo.getNum() + "</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>아이디</td>");
			out.println("<td>" + vo.getId() + "</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>비밀번호</td>");
			out.println("<td>" + vo.getPass() + "</td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>나이</td>");
			out.println("<td><input type='text' name='age' value='" + vo.getAge() + "'></input></td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>이메일</td>");
			out.println("<td><input type='text' name='email' value='" + vo.getEmail() + "'></input></td>");
			out.println("</tr>");
			out.println("<tr>");
			out.println("<td>전화번호</td>");
			out.println("<td><input type='text' name='phone' value='" + vo.getPhone() + "'></input></td>");
			out.println("</tr>");		
		} else {
			out.println("<tr>");
			out.println("<td>일치하는 회원이 없습니다.</td>");
			out.println("</tr>");
		}
		out.println("</table>");
		out.println("</body>");
		out.println("</html>");
	}

}

반응형

+ Recent posts