본문으로 바로가기

[JSP개발] 회원가입 - MVC 패턴 적용

category 코딩/JSP 2016. 12. 4. 09:00







1. 개요







지난 포스팅에 이어서 이번에는 MVC 패턴을 적용할 것이다. 지난 포스팅에 사용한 소스 코드에서 많은 변화가 있다. 모델(M)에 해당하는 부분은 기존부터 분리되어 있었기에 여기서는 뷰(V)와 컨트롤러(C)를 분리해야 한다. 


MVC 패턴을 적용하기 위한 작업 순서는 다음과 같다.


1. web.xml 수정 : Controller(서블릿)와 URL 매핑을 처리한다.

2. Controller를 생성한다.

3. Action 인터페이스와 ActionForward 클래스를 생성한다.

4. Controller에 명령어(Command)와 명령어에 해당하는 Action 클래스를 구현한다.



■ Java


Controller 및 Action 클래스는 모두 jsp.member.action 패키지에 구현한다.

  • ActionForward.java : 페이지 이동을 처리하기 위한 클래스이다.

  • MemberController.java : 회원관련 Controller

  • MemberJoinAction.java : 회원가입을 처리하는 Action 클래스이다.

  • MemberLoginAction.java : 로그인을 처리하는 Action 클래스

  • MemberLogoutAction.java : 로그아웃을 처리하는 Action 클래스

  • MemberInfoAction.java : 현재 로그인한 사용자의 회원정보를 보여주는 Action 클래스이다.

  • MemberModifyFormAction.java : 회원정보 수정화면에 현재 회원정보를 출력하는 Action 클래스이다.

  • MemberModifyAction.java : 회원정보 수정작업을 처리하는 Action 클래스이다.

  • MemberDeleteAction.java : 회원삭제 작업을 처리하는 Action 클래스이다.


■ JSP


Pro 폴더에 있는 JSP는 모두 Action 클래스로 변경되므로 삭제한다. 새로 추가된 것은 ResultForm.jsp 이다. 

  • ResultForm.jsp : 각종 처리결과를 표시할 JSP




2. 소스 코드



일부 JSP의 코드가 변경되었는데 그것은 첨부한 소스 코드를 참고하면 된다.



1. web.xml 수정


기존의 web.xml에<servlet>과 <servlet-mapping> 태그 부분을 작성해 준다. 이 작업은 Controller를 등록 및 URL에 표시될 명령어를 Mapping 하는 과정이다.


여기에서는 URL을 통해 xxxx.do의 형식의 명령어가 전달된다.


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
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         id="WebApp_ID" version="2.5">
 <display-name>JSP_create</display-name>
 
     <servlet>
        <description>Controller</description>
        <display-name>MemberController</display-name>
        <servlet-name>MemberController</servlet-name>
        <servlet-class>jsp.member.action.MemberController</servlet-class>
    </servlet>
 
     <servlet-mapping>
        <servlet-name>MemberController</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
 
    <resource-ref>
         <description>connection</description>
         <res-ref-name>jdbc/orcl</res-ref-name>
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
    </resource-ref>
 
</web-app>
cs



2. Controller를 생성


web.xml에 등록한 MemberController를 생성한다. jsp.member.action 패키지에 해당 클래스를 생성한다. 



3. Action, ActionForward 생성


Action 인터페이스와 ActionForward 클래스를 생셩한다. 생성할 위치는 jsp.member.action 패키지이다.



■ Action.java


1
2
3
4
5
6
7
8
9
package jsp.member.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public interface Action {
    public ActionForward execute(HttpServletRequest request, 
        HttpServletResponse response) throws Exception;
}
cs



■ ActionForward.java


ActionForward는 페이지 이동을 처리하기 위해 필요한 클래스이다. 


  • isRedirect : sendRedirect와 forward 중 어떤 것을 이용해서 페이지 이동할지를 결정하기 위한 boolean 변수이다.

  • nextPath : 이동할 페이지 경로값을 갖고있는 변수이다.


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
package jsp.member.action;
 
/**
 * 페이지 이동을 처리하기 위한 클래스
 */
public class ActionForward {
    
    private boolean isRedirect = false;
    private String nextPath = null// 이동할 다음 화면
    
    /**
     * Redirect 사용여부, false이면 Forward 사용
     * @return isRedirect
     */
    public boolean isRedirect() {
        return isRedirect;
    }
    public void setRedirect(boolean isRedirect) {
        this.isRedirect = isRedirect;
    }
    public String getNextPath() {
        return nextPath;
    }
    public void setNextPath(String nextPath) {
        this.nextPath = nextPath;
    }
}
 
cs



4. Controller에 명령어(Command)와 명령어에 해당하는 Action 클래스를 구현


Controller에 xxxx.do 라는 명령어를 입력한다. 그리고 그 명령어에 해당하는 Action 클래스를 구현한다.



■ MemberController.java


GET, POST 방식에 관계없이 doProcess( ) 메서드를 통해 모든 작업이 처리된다. doProcess( ) 메서드에서는 먼저 URL에서 명령어를 추출한다. 그리고 추출한 명령어에 해당하는 Action을 실행한다. Action이 실행되고 나면 ActionForward를 반환하는데 여기에 담겨있는 정보를 통해 화면 이동을 처리한다.


  • 46 ~ 49 줄

request로부터 URL을 얻어온다. 얻어온 URL에서 명령어를 분리하는 작업을 한다. 


  • 64 ~ 105 줄

이 부분은 단순히 화면 전환만을 처리하는 부분이다. 그렇기에 별로의 Action 클래스가 없다. 여기에서는 ActionForward 객체를 생성해 Redirect 사용 여부와 이동할 경로를 지정해준다. 


  • 107 ~ 141 줄

이 부분에서는 특정 작업들을 처리한다. 기존 Pro 폴더에 있던 JSP에서 처리하는 작업들을 여기에 있는 Action 클래스들이 처리를 한다. 명령어에 해당하는 Action 객체를 생성하고 execute( )를 실행한다. 그러면 해당 Action 클래스에서 작업을 처리하고 ActionForward를 반환한다.


  • 146 ~ 154 줄

ActionForward 객체가 가진 값에 따라 화면 이동을 처리한다. isRedirext가 true 이면 sendRedirect( )를 통해 화면 이동을 처리하고 false라면 forward( )를 통해 화면 이동을 처리한다.


시스템(세션, DB 등..)에 변화가 생기는 작업의 경우 sendRedirect( )를 아닐 경우(화면전환, 조회 등..) forward( )를 이용한다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package jsp.member.action;
 
import java.io.IOException;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * 회원관련 Controller
 *
 */
public class MemberController extends HttpServlet
{
    private static final long serialVersionUID = 1L;
 
    /**
     * GET 방식일 경우 doGet()
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
            doProcess(request,response);
    }      
        
    /**
     * POST 방식일 경우 doPost()
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
            doProcess(request,response);
    }                          
        
    /**
     * 명령어에 따른 해당 Action을 지정해 준다.
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void doProcess(HttpServletRequest request, HttpServletResponse response) 
             throws ServletException, IOException {
        
        // 넘어온 커맨드를 추출하는 과정
        String requestURI = request.getRequestURI();
        int cmdIdx = requestURI.lastIndexOf("/")+1;
        
        String command = requestURI.substring(cmdIdx);
        
        // URI, command 확인
        //System.out.println("requestURI : "+requestURI);
        //System.out.println("command : "+command);
        
        ActionForward forward = null;
        Action action = null;
        
        // 보여줄 화면 URL
        String form = "MainForm.jsp?contentPage=member/";
        
        // 커맨드에 해당하는 액션을 실행한다.
        try {
            // 화면전환
            if(command.equals("MainForm.do")) // 메인화면 이동
            {
                forward=new ActionForward();
                forward.setRedirect(false);
                forward.setNextPath("MainForm.jsp");
            }
            else if(command.equals("LoginForm.do"))    // 로그인화면 이동
            {
                forward=new ActionForward();
                forward.setRedirect(false);
                forward.setNextPath(form+"LoginForm.jsp");
            }
            else if(command.equals("JoinForm.do"))    // 회원가입화면 이동
            {
                forward=new ActionForward();
                forward.setRedirect(false);
                forward.setNextPath(form+"JoinForm.jsp");
            }
            else if(command.equals("UserInfoForm.do"))    // 내정보 클릭 - 회원정보화면 이동
            {
                forward=new ActionForward();
                forward.setRedirect(false);
                forward.setNextPath(form+"UserInfoForm.jsp");
            }
            else if(command.equals("ModifyFrom.do")) // 회원수정화면 이동
            {
                forward=new ActionForward();
                forward.setRedirect(false);
                forward.setNextPath(form+"ModifyFrom.jsp");
            }
            else if(command.equals("DeleteForm.do")) // 회원삭제화면 이동
            {
                forward=new ActionForward();
                forward.setRedirect(false);
                forward.setNextPath(form+"DeleteForm.jsp");
            }
            else if(command.equals("Result.do")) // 각종 처리결과 화면 이동
            {
                forward=new ActionForward();
                forward.setRedirect(false);
                forward.setNextPath(form+"ResultForm.jsp");
            }
            // 각종 처리 액션
            else if(command.equals("MemberLoginAction.do")) // 로그인 처리
            {
                action = new MemberLoginAction();
                forward = action.execute(request, response);
            }
            else if(command.equals("MemberLogoutAction.do")) // 로그아웃 처리
            {
                action = new MemberLogoutAction();
                forward = action.execute(request, response);
            }
            else if(command.equals("MemberJoinAction.do")) // 회원가입 처리
            {
                action = new MemberJoinAction();
                forward = action.execute(request, response);
            }
            else if(command.equals("MemberInfoAction.do")) // 회원정보화면에 보여줄 정보 처리
            {
                action = new MemberInfoAction();
                forward = action.execute(request, response);
            }
            else if(command.equals("MemberModifyFormAction.do")) // 회원수정화면에 보여줄 정보 처리
            {
                action = new MemberModifyFormAction();
                forward = action.execute(request, response);
            }
            else if(command.equals("MemberModifyAction.do")) // 회원수정 처리
            {
                action = new MemberModifyAction();
                forward = action.execute(request, response);
            }
            else if(command.equals("MemberDeleteAction.do")) // 회원삭제 처리
            {
                action = new MemberDeleteAction();
                forward = action.execute(request, response);
            }
 
            // 화면이동 - isRedirext() 값에 따라 sendRedirect 또는 forward를 사용
            // sendRedirect : 새로운 페이지에서는 request와 response객체가 새롭게 생성된다.
            // forward : 현재 실행중인 페이지와 forwad에 의해 호출될 페이지는 request와 response 객체를 공유
            if(forward != null){
                if (forward.isRedirect()) {
                    response.sendRedirect(forward.getNextPath());
                } else {
                    RequestDispatcher dispatcher = request
                            .getRequestDispatcher(forward.getNextPath());
                    dispatcher.forward(request, response);
                }
            }
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    } // end doProcess
}
 
cs



■ MemberJoinAction.java


  • 28 ~ 39 줄

JoinForm.jsp로부터 넘겨받은 파라미터 값을 request에서 추출한다. 그리고 추출한 값을 MemberBean에 세팅한다.


  • 45 ~ 46 줄

가입 성공 시 ActionForward에 값을 세팅한다. 회원가입의 경우 DB에 변화가 있는 요청이므로 Redirect 방식을 이용해야 한다. 그렇기에 setRedirect(true)로 세팅한다. 가입 후 결과를 표시하기 위해 setNextPath("Result.do")로 이동경로를 지정한다. 


  • 49 줄

회원가입 성공 시 성공 여부를 세션에 저장한다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package jsp.member.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import jsp.member.model.MemberBean;
import jsp.member.model.MemberDAO;
 
/** 
 *  회원가입을 처리하는 Action 클래스<br>
 *  JoinForm.jsp에서 넘겨받은 정보를 이용하여
 *  회원가입을 처리한다.
 */
public class MemberJoinAction implements Action
{
 
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        request.setCharacterEncoding("euc-kr"); // 인코딩
        
        ActionForward forward = new ActionForward();
        
        MemberDAO dao = MemberDAO.getInstance();
        
        // 입력된 정보를 자바빈에 세팅한다.
        MemberBean member = new MemberBean();
        member.setId(request.getParameter("id"));
        member.setPassword(request.getParameter("password"));
        member.setName(request.getParameter("name"));
        member.setGender(request.getParameter("gender"));;
        member.setBirthyy(request.getParameter("birthyy"));
        member.setBirthmm(request.getParameterValues("birthmm")[0]);
        member.setBirthdd(request.getParameter("birthdd"));
        member.setMail1(request.getParameter("mail1"));
        member.setMail2(request.getParameterValues("mail2")[0]);
        member.setPhone(request.getParameter("phone"));
        member.setAddress(request.getParameter("address"));
        
        // 회원가입 실행
        dao.insertMember(member);
        
        // 가입성공
        forward.setRedirect(true);
           forward.setNextPath("Result.do");
        
           // 가입성공 메시지를 세션에 담는다.
           request.getSession().setAttribute("msg""1");
           
        return forward;
    }
}
 
cs



■ MemberLoginAction.java


  • 23 ~ 24 줄

request로부터 아이디와 비밀번호를 가져온다.


  • 30 ~ 43 줄

비밀번호가 잘못되었거나 아이디가 없는 경우, 즉 로그인 실패에 대한 처리를 한다. 로그인이 실패했을 경우는 세션에 변화가 없는 경우이므로 setRedirect(false)로 지정한다. 


로그인이 실패하면 메시지를 request에 담고 다시 로그인 화면으로 이동한다. 로그인 화면에서는 request에 담긴 실패 메시지를 화면에 출력한다.


  • 45 ~ 53 줄

로그인 성공 시 아이디를 세션에 담고, 메인화면으로 이동한다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package jsp.member.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import jsp.member.model.MemberDAO;
 
/**
 * 로그인 작업을 처리하는 Action 클래스
 */
public class MemberLoginAction implements Action
{
 
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        ActionForward forward = new ActionForward();
        HttpSession session=request.getSession();
        
        // 아이디와 비밀번호를 가져온다.
        String id = request.getParameter("id");
        String password = request.getParameter("password");
        
        // DB에서 아이디, 비밀번호 확인
        MemberDAO dao = MemberDAO.getInstance();
        int check = dao.loginCheck(id, password);
        
        if(check == 0)    // 비밀번호 틀릴경우 -> 다시 로그인 화면으로 이동
        { 
            // 로그인 실패시 메시지를 request에 담는다.
               request.setAttribute("fail""0");
               
               forward.setRedirect(false);
               forward.setNextPath("LoginForm.do");
        }
        else if(check == -1// 아이디가 없을 경우 -> 다시 로그인 화면으로 이동
        {
            request.setAttribute("fail""-1");
 
               forward.setRedirect(false);
               forward.setNextPath("LoginForm.do");
        }
        else
        {
            //로그인 성공 -> 세션에 아이디를 저장
               session.setAttribute("sessionID", id);
               
               // 로그인 성공후 메인화면으로 이동
               forward.setRedirect(true);
               forward.setNextPath("MainForm.do");
        }
           
        return forward;
    }
 
}
cs



■ MemberLogoutAction.java 


  • 19 줄

로그아웃 시 세션의 모든 정보를 삭제한다.


  • 22 ~ 23줄

세션에 변화가 있기에 setRedirect(true)로 세팅한다. 


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
package jsp.member.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 *  로그아웃 작업을 처리하는 Action 클래스
 */
public class MemberLogoutAction implements Action
{
 
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        ActionForward forward = new ActionForward();
        
        // 로그아웃시 세션정보를 모두 삭제한다.
        request.getSession().invalidate();
        
        // 로그아웃 후 메인화면으로 돌아간다.
        forward.setRedirect(true);
        forward.setNextPath("MainForm.do");
        
        return forward;
    }
}
cs



■ MemberInfoAction.java


로그인한 사용자의 정보를 화면에 보여준다.


  • 22 ~ 27줄

로그인한 아이디를 이용해서 사용자의 정보를 찾는다. 


  • 30 줄

찾은 사용자 정보를 request에 담는다. 이것을 UserInfoForm.jsp로 전달할 것이다.


  • 32 ~ 33 줄

단순한 조회이므로 setRedirect(true)로 세팅하고 다음 경로를 UserInfoForm.jsp로 지정한다.


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
31
32
33
34
35
36
37
38
39
package jsp.member.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import jsp.member.model.MemberBean;
import jsp.member.model.MemberDAO;
 
/** 
 * 현재 로그인한 사용자의 회원정보를 보여주는 Action 클래스
 */
public class MemberInfoAction implements Action
{
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        ActionForward forward = new ActionForward();
        
        // 세션이 가지고있는 로그인한 ID 정보를 가져온다
        HttpSession session = request.getSession();
        String id = session.getAttribute("sessionID").toString();
        
        // 그 아이디 해당하는 회원정보를 가져온다.
        MemberDAO dao = MemberDAO.getInstance();
        MemberBean member = dao.getUserInfo(id);
        
        // UserInfoForm.jsp에 회원정보를 전달하기 위해 request에 MemberBean을 세팅한다.
        request.setAttribute("memberInfo", member);
        
        forward.setRedirect(false);
        forward.setNextPath("UserInfoForm.do");
        // MainForm.jsp?contentPage=member/view/UserInfoForm.jsp
        
        return forward;
    }
 
}
cs



■ MemberModifyFormAction.java


회원정보 수정 화면에 현재 회원정보를 출력한다. 정보를 출력할 화면만 다를 뿐 클래스의 역할은 MemberInfoAction.java

와 동일하다.


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
31
32
33
34
35
36
37
38
package jsp.member.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import jsp.member.model.MemberBean;
import jsp.member.model.MemberDAO;
 
/** 
 *  회원정보 수정화면에 현재 회원정보를 출력하는 Action 클래스
 */
public class MemberModifyFormAction implements Action
{
 
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        ActionForward forward = new ActionForward();
        
        // 세션이 가지고있는 로그인한 ID 정보를 가져온다
        HttpSession session = request.getSession();
        String id = session.getAttribute("sessionID").toString();
        
        // 수정할 회원정보를 가져온다.
        MemberDAO dao = MemberDAO.getInstance();
        MemberBean member = dao.getUserInfo(id);
        
        // ModifyFrom.jsp에 회원정보를 전달하기 위해 request에 MemberBean을 세팅한다.
        request.setAttribute("memberInfo", member);
        
        forward.setRedirect(false);
        forward.setNextPath("ModifyFrom.do");
        
        return forward;
    }
}
cs



■ MemberModifyAction.java


회원정보 수정 작업을 처리한다.


  • 32 ~ 38 줄

ModifyFrom.jsp로부터 넘겨받은 파라미터 값을 request에서 추출한다. 그리고 추출한 값을 MemberBean에 세팅한다.


  • 42 ~ 43 줄

수정 성공 시 ActionForward에 값을 세팅한다. 회원 수정의 경우 DB에 변화가 있는 요청이므로 Redirect 방식을 이용해야 한다. 그렇기에 setRedirect(true)로 세팅한다. 가입 후 결과를 표시하기 위해 setNextPath("Result.do")로 이동경로를 지정한다. 


  • 46 줄

수정 성공 여부를 세션에 저장한다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package jsp.member.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import jsp.member.model.MemberBean;
import jsp.member.model.MemberDAO;
 
/**
 * 회원정보 수정작업을 처리하는 Action 클래스
 *
 */
public class MemberModifyAction implements Action
{
 
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        request.setCharacterEncoding("euc-kr"); // 인코딩
        
        ActionForward forward = new ActionForward();
        
        MemberDAO dao = MemberDAO.getInstance();
        
        // 세션이 가지고있는 로그인한 ID 정보를 가져온다
        HttpSession session = request.getSession();
        String id = session.getAttribute("sessionID").toString();
        
        // 수정할 정보를 자바빈에 세팅한다.
        MemberBean member = new MemberBean();
        member.setId(id);
        member.setPassword(request.getParameter("password"));
        member.setMail1(request.getParameter("mail1"));
        member.setMail2(request.getParameterValues("mail2")[0]); 
        member.setPhone(request.getParameter("phone"));
        member.setAddress(request.getParameter("address"));
        
        dao.updateMember(member);
 
        forward.setRedirect(true);
           forward.setNextPath("Result.do");
        
           // 회원정보 수정 성공 메시지를 세션에 담는다.
           session.setAttribute("msg""0");
           
        return forward;
    }
 
}
cs



■ MemberDeleteAction.java


회원삭제 작업을 처리한다.


  • 22 ~ 27 줄

아이디와 비밀번호를 이용해 회원 삭제 작업을 처리한다. 처리 후 결과 값을 받는다.


  • 29 ~ 33 줄

회원 삭제가 정상적으로 처리되었을 경우 세션 정보를 삭제한다. 삭제는 세션과 DB에 변화가 있는 요청이므로 setRedirect(true)로 지정하고, 처리 결과를 표시하기 위해 setNextPath("Result.do")로 이동경로를 지정한다.


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
31
32
33
34
35
36
37
38
39
40
41
42
package jsp.member.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import jsp.member.model.MemberDAO;
 
/**
 * 회원삭제 작업을 처리하는 Action 클래스
 */
public class MemberDeleteAction implements Action
{
 
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        ActionForward forward = new ActionForward();
        
        // 세션이 가지고있는 로그인한 ID 정보를 가져온다
        HttpSession session = request.getSession();
        String id = session.getAttribute("sessionID").toString();
        String password = request.getParameter("password");
        
        MemberDAO dao = MemberDAO.getInstance();
        int check = dao.deleteMember(id, password);
        
        if(check == 1){
            session.invalidate(); // 회원정보 담긴 세션 삭제
            forward.setRedirect(true);
            forward.setNextPath("Result.do");
        }
        else{
            System.out.println("회원 삭제 실패");
            return null;
        }
        
        return forward;
    }
}
 
cs




3. 소스코드 다운로드 (war 파일)



JSP_DEV.war




RSS구독 링크추가 트위터 이메일 구독