//5. 특정 주소에 대한 처리 if(command.equals("/MemberJoin.me")){ System.out.println("/MemberJoin.me 호출");
//6. 회원가입처리 -> 회원정보 입력창(view의 개념이 필요) //모델2에서 페이지 이동은 무조건 ActionForward사용 /*//6-1.페이지이동방법은 2가지 중 첫번째 : response resp.sendRedirect("./member/insertForm.jsp"); //6-2.페이지이동방법은 2가지 중 두번째 : forward RequestDispatcher dis = req.getRequestDispatcher("./member/insertForm.jsp"); dis.forward(req, resp);*/
//6-4. 특정주소에 대한 처리 후 페이지이동 =>먼저 특정주소에 대한 처리는 ActionForward 객체 사용 //ActionForward 객체 생성되기 전에는 null (값이 없다)이다가 객체생성후 이동정보가 생긴다 forward = newActionForward(); // 이동할 주소 forward.setPath("./member/insertForm.jsp"); // 이동할 방법 forward.setRedirect(false);
//8.MemberJoinAction일때도 주소 출력 //8-1.Action페이지는 모델1의 pro페이지 역할을 한다. }elseif(command.equals("/MemberJoinAction.me")){ //주소에 `.`붙이면 안됨 System.out.println("/MemberJoinAction.me 주소 호출");
//8-2.전달되는 정보를 Action.java 인터페이스에 저장 --Acttion.java인터페이스와 MemberJoinAction.java생성--> DB로 전달 //Action페이지를 통해서 처리 => MemberJoinAction 객체를 생성 후 execute메서드 호출 //MemberJoinAction action = new MemberJoinAction(); //데이터 업캐스팅(Action <- MemberJoinAction)해서 저장
//9-2.`MemberJoinAction action = new MemberJoinAction()`을 `action = new MemberJoinAction();`으로 변경 action = newMemberJoinAction();
try { System.out.println("@@@@ Controller : MemberJoinAction 객체생성완료 후 excute()호출완료"); forward = action.execute(req, resp); System.out.println("@@@@ Controller : 회원가입 처리완료 후 페이지 이동"+forward); } catch (Exception e) { e.printStackTrace(); }
//10. 로그인페이지연결 }elseif(command.equals("/MemberLogin.me")){ System.out.println("가상주소: /MemberLogin.me 주소 호출, 실제주소: ./member/loginForm.jsp"); forward = newActionForward(); forward.setPath("./member/loginForm.jsp"); forward.setRedirect(false); //10-1. 로그인처리 }elseif(command.equals("/MemberLoginAction.me")){ //10-2. MemberLoginAction.java 생성 action = newMemberLoginAction(); try { System.out.println("@@@@ Controller : MembeLoginAction 객체생성완료 후 excute()호출완료"); forward = action.execute(req, resp); System.out.println("@@@@ Controller : 로그인 처리완료 후 페이지 이동"+forward); } catch (Exception e) { e.printStackTrace(); } } //7.페이지이동 : 두가지방식 //이동정보가 있을때 (ActionForward객체가 생성되었을때) 페이지이동이 실행되어야한다 //7-1.response => true일때 이동 //7-2.forward => false일때 이동 if(forward != null){ System.out.println("@@@페이지이동@@@"); if(forward.isRedirect()){//1 - response.sendRedirect(주소)사용 //정보는 ActionForward객체 안에 있다 System.out.println("sendRedirect방식의 이동"+forward.getPath()); resp.sendRedirect(forward.getPath()); }else{ //0 - forward사용 System.out.println("RequestDispatcher방식의 이동"+forward.getPath()); RequestDispatcherdis= req.getRequestDispatcher(forward.getPath()); dis.forward(req, resp); } } }//end of doProcess
//4. 로그인메서드 // DB에서 해당 값이 있는지 체크하고 결과를 리턴 // 정수형 데이터값 사용(1-정상처리, 0-비번오류, (-1)-아이디가없음) publicintidCheack(String id, String pw){ intresult= -1; try { //4-1. 드라이브로드 디비연결 con = getCon(); //4-2. SQL & pstmt 생성 sql = "select pw from itwill_member where id=?"; pstmt = con.prepareStatement(sql); pstmt.setString(1, id); //4-3. 실행 -> rs저장 rs = pstmt.executeQuery(); //4-4. 데이터 처리 //왜 while이 아닌 if인가? where절에서 id는 pk조건을 가지고 있으므로 중복이 없기때문 if(rs.next()){ if(pw.equals(rs.getString("pw"))){ result = 1; //4-5. 세션정보를 만들 수 있을까? 만들 수 없다. //session.setAttribute(); //why? session은 jsp내장객체이다. // 따라서 java에서 사용할 수 없지만 추후 서블릿을 통해 사용할 수 있다. }else{ result = 0; } }else{ result = -1; } System.out.println("@@@@ DAO : 로그인처리완료 "+result); } catch (Exception e) { e.printStackTrace(); } finally { //4-6. 자원해제 closeDB(); } return result; }//idCheck닫힘