티스토리 뷰

반응형

안녕하세요. 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를 사용하지 않고 고전적인 방법으로 만드는 강의이기 때문이다.


이 글이 도움이 되셨다면 댓글 부탁드립니다^^
다음 글로 찾아오겠습니다!
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함