ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Servlet - JSP MVC01 (6) 회원정보수정하기
    Web/Servlet-JSP 2023. 5. 26. 11:51

    회원정보 수정하기를 추가하고 mvc01을 마무리

     

     

    1. 회원상세페이지(MemberContentController)에 수정, 취소, 돌아가기 추가 및 필요데이터 넘기기

    pw.println("<input type= 'submit' value='수정'/>");
    pw.println("<input type= 'reset' value='취소'/>");
    pw.println("<a href ='/MVC01/memberList.do'>돌아가기</a>");

    > 수정하기 버튼을 누르면, 수정 요청을 받는 컨트롤러에 새로운 나이, 이메일, 휴대폰번호 정보가 함께 넘어가야한다. 

    >  따라서 수정버튼은 submit으로 해두고, 회원상세보기 테이블 전체를 감싸도록 form태그를 추가하자

    pw.println("<form action='/MVC01/memberUpdate.do' method='post'>");

    > submit버튼을 누르면 memberUpdate.do에 post 방식으로 정보가 넘어간다.

    > 이름,이메일,전화번호는 중복값을 허용하기 때문에 회원레코드를 식별하기 위해서 기본키인 num을 넘겨야한다.

    > 하지만 num칸에 input text태그를 추가하면, num도 수정될 수도 있다. 따라서 정보는 넘기되, 수정은 못하도록 해야한다.

     

    pw.println("<input type='hidden' name='num' value='"+mem_inf.getNum()+"' />");

     이렇게 hidden타입을 사용하면, 수정은 못하지만, 정보는 넘길 수 있다.

     

    - 취소버튼은 form태그를 통해 자동으로 reset이 실행되므로, 수정과 돌아가기만 만들면된다.

    - 먼저 수정하기를 수행할 서블릿과 DAO 메서드를 만들자.

     

    2. update 수행할 서블릿 만들기 

    //파라미터 수집 4개
    		int num = Integer.parseInt(request.getParameter("num"));
    		int age = Integer.parseInt(request.getParameter("age"));
    		String email = request.getParameter("email");
    		String phone = request.getParameter("phone");

    - form태그를 통해 post방식으로 요청이 넘어가면, 서블릿이 파라미터를 수집 -> VO객체에 담아서 넘기기 -> VO를 통해      DAO 쿼리 실행

    - 업데이트 성공 후 다시 멤버 리스트로 돌아가도록 Redirect

    response.sendRedirect("/MVC01/memberList.do");

     

    3. DAO 업데이트 

    public int MemberUpdate(MemberVO modify) {
    		String sql ="update member set age=?,email=?,phone=? where num=?";
    		getConnect();
    		int cnt=-1;
    		try {
    			ps = conn.prepareStatement(sql);
    			ps.setInt(1, modify.getAge());
    			ps.setString(2, modify.getEmail());
    			ps.setString(3, modify.getPhone());
    			ps.setInt(4, modify.getNum());
    			
    			cnt = ps.executeUpdate();
    		}catch(Exception e) {
    			e.printStackTrace();
    		}finally {
    			dbClose();
    		}
    		return cnt;
    	}

    - sql파라미터에  컨트롤러를 통해 VO에 담겨서 넘어온 값을 ps를 통해 집어넣고, 업데이트를 실행한다.

    - 업데이트에 성공하면 1아니면 0을 반환하고 이를 컨트롤러에 넘기자.

     

    *업데이트 성공여부에 따라 redirect결정 

    	if(cnt>0) { //업데이트 성공 
    			response.sendRedirect("/MVC01/memberList.do"); //리스트로 돌아가기
    			 //DB 서버 실행되있어야함
    		}else {//업데이트 실패
    			throw new ServletException("not update");
    		}

     

    4. 돌아가기버튼

     

    <a>태그를 통해 다시 List로 돌아가도록 설정해두자 

    pw.println("<a href ='/MVC01/memberList.do'>돌아가기</a>");

    수정이 적용되는 것을 볼 수 있다.

     

     

    정리: 업데이트를 했다.

     

    상세정보에서 업데이트 요청시 필요정보 포함하기: input태그, hidden, form태그를 이용한 post

    얻어온

Designed by Tistory.