[MVC SPRING] 13. 회원정보 수정하기
안녕하세요. Nerd-Lee입니다.
공부 내용은, 인프런 박매일님의
[NarP Series]MVC 프레임워크는 내 손에[나프1탄]
을 참고하였습니다.
MVC 1단계인, Servlet 환경으로만 만들어보고, MVC 2단계로 넘어가고
나중에는 Spring Framework를 사용하는 방식의 강의입니다.
MVC 1단계는, Controller + Model 만을 사용하는 방식입니다.
진도가 빠르게 나가지 않아, 중요하다고 생각하는 부분들만 작성할 예정입니다.
1. 회원정보 수정, 취소, 돌아가기 버튼 만들기
MemberContentController
에서 만들어준다.- 기본틀은 다음과 같다.
@WebServlet("/memberContent.do")
public class MemberContentController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request로 파라미터 받아오기
int number = Integer.parseInt(request.getParameter("num"));
MemberDAO dao = new MemberDAO();
MemberVO vo = dao.memberContent(number);
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<form action='/memberUpdate.do' method='post'>");
out.println("<input type='hidden' name='number' value='" + vo.getId() + "'/>");
out.println("<table border='2'>");
// 회원 정보가 있다면
if(vo != null) {
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.getNumber() + "</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.getPassword() + "</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>이름</td>");
out.println("<td>" + vo.getName() + "</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>나이</td>");
out.println("<td><input type='text' name='age' value='" + vo.getAge() + "'/></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>이메일</td>");
out.println("<td><input type='text' name='email' value='" + vo.getEmail() + "'/></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>전화번호</td>");
out.println("<td><input type='text' name='phone' value='" + vo.getPhone() + "'/></td>");
out.println("</tr>");
}
else {
out.println("<tr>");
out.println("<td>일치하는 회원이 없습니다.</td>");
out.println("</tr>");
}
out.println("<tr>");
out.println("<td colspan='2' align='center'>");
out.println("<input type='submit' value='수정하기'/>");
out.println("<input type='reset' value='취소'/>");
out.println("<input type='button' value='돌아가기'/>");
out.println("</td>");
out.println("</tr>");
out.println("</table>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
}
}
- 수정하기 버튼을 누르면, id와 input의 데이터인 나이, 이메일, 전화번호의 데이터를 같이 넘겨줘야한다.
- form은, input의 데이터만 넘겨주기 때문에, id는 input이 아니다.
그래서 input의 type중에 hidden이란 타입이 있는데, 눈에는 보이지 않으면서
form 태그 안에 있으면 value의 값을 같이 넘겨줄 수 있게 된다. memberUpdate.do
라는 요청을 받는 서블릿을 만들어보자.
2. 서블릿 페이지 만들기
@WebServlet("/memberUpdate.do")
public class MemberUpdateController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 파라미터 수집(VO)
request.setCharacterEncoding("utf-8");
int number = Integer.parseInt(request.getParameter("number"));
int age = Integer.parseInt(request.getParameter("age"));
String email = request.getParameter("email");
String phone = request.getParameter("phone");
MemberVO vo = new MemberVO();
vo.setNumber(number);
vo.setAge(age);
vo.setEmail(email);
vo.setPhone(phone);
MemberDAO dao = new MemberDAO();
int success = dao.memberUpdate(vo);
if(success > 0) {
response.sendRedirect("/memberList.do");
}
else {
throw new ServletException("not update");
}
}
}
3. DAO 메서드 추가하기
public int memberUpdate(MemberVO vo) {
String SQL = "update member set age=?, email=?, phone=? where number=?";
getConnect();
int success = -1;
try {
ps = conn.prepareStatement(SQL);
// 4. 파라미터에 값 추가하기
ps.setInt(1, vo.getAge());
ps.setString(2, vo.getEmail());
ps.setString(3, vo.getPhone());
ps.setInt(4, vo.getNumber());
success = ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
dbClose();
}
return success;
}
4. 실행해보기
- memberList.do 페이지로 가서, 아이디를 클릭하고 상세보기 페이지에서 input 데이터 값만 수정하고
수정하기를 클릭하면 수정된 데이터가 잘 들어가고, 다시memberList.do
페이지로 넘어오게 된다. - 이제 돌아가기 버튼에만,
memberList.do
페이지로 돌아가게 만들어주면 된다. - 돌아가기 버튼은, 버튼이 아닌 anchor 태그로, href 태그에 붙여주자.
- 이 시간에는 javascript를 사용하지 않고 고전적인 방법으로 만드는 강의이기 때문이다.
이 글이 도움이 되셨다면 댓글 부탁드립니다^^
다음 글로 찾아오겠습니다!
다음 글로 찾아오겠습니다!