if (command.equals("/memberList.do")) { // 회원 리스트 화면
MemberDAO dao = new MemberDAO();
List<MemberVO> list = dao.memberList();
request.setAttribute("list", list);
RequestDispatcher rd = request.getRequestDispatcher("member/memberList.jsp");
rd.forward(request, response);
} else if (command.equals("/memberInsert.do")) { // 회원 가입
} else if (command.equals("/memberRegister.do")) { // 회원 가입 화면
} else if (command.equals("/memberContent.do")) { // 회원 상세보기 화면
} else if (command.equals("/memberUpdate.do")) { // 회원 정보 수정
} else if (command.equals("/memberDelete.do")) { // 회원 정보 삭제
}
#MVC04_02 FrontController 받은 요청 if ~ else if로 처리하기
jsp 또는 html 로 경로를 바꿀 때는 리다이렉트 보다는 forward로 해주는게 좋다.
분기처리는 하였지만, 생각보다 객체지향적이지 않음.. 현재 분기마다 각 작업 중..
## 전체 화면 및 기능 작업 (FrontController)
컨트롤러 하나에서 분기작업으로 각 기능 처리되도록 하였지만, 약간 무거워짐.(지저분)
package kr.bit.frontController;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.bit.model.MemberDAO;
import kr.bit.model.MemberVO;
@WebServlet("*.do")
public class MemberFrontController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 한글 깨짐 방지
request.setCharacterEncoding("utf-8");
// 1. 클라이언트가 어떤 요청을 했는지 파악하기.
// (request를 이용하면 클라이언트가 어떤 요청을 했는지 파악 가능)
String url = request.getRequestURI();
// System.out.println("url : " + url); url 확인
// /MVC04/memberList.do 이런식으로 출력되는 것 확인 가능.
// 컨택스트 가져오기
String ctx = request.getContextPath();
// System.out.println("ctx : " + ctx); contextPath 확인
// /MVC04 이런식으로 출력되는 것 확인 가능.
// 2. 실제로 요청한 명령이 무엇인지 파악(contextPath 제외한 url)
String command = url.substring(ctx.length());
// System.out.println("command : " + command); 클라이언트가 서버에 요청한 실제 command
// memberList.do 등이 출력된다.
// 3. 요청에 따른 분기 작업.
if (command.equals("/memberList.do")) { // 회원 리스트 화면
MemberDAO dao = new MemberDAO();
List<MemberVO> list = dao.memberList();
request.setAttribute("list", list);
RequestDispatcher rd = request.getRequestDispatcher("member/memberList.jsp");
rd.forward(request, response);
} else if (command.equals("/memberInsert.do")) { // 회원 가입
// 1. 파라미터 수집(VO)
String id = request.getParameter("id");
String pass = request.getParameter("pass");
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String email = request.getParameter("email");
String phone = request.getParameter("phone");
// 파라미터 수집(VO)
// MemberVO vo = new MemberVO(id, pass, name, age, email, phone);
MemberVO vo = new MemberVO();
vo.setId(id);
vo.setPass(pass);
vo.setName(name);
vo.setAge(age);
vo.setEmail(email);
vo.setPhone(phone);
//System.out.println("vo : " + vo); // vo.toString() 이 생략되어있는 것.
// Model과 연동하는 부분
MemberDAO dao = new MemberDAO();
int cnt = dao.memberInsert(vo);
PrintWriter out = response.getWriter();
// 가입 성공
if ( cnt > 0 ) {
//out.println("insert success");
// 다시 회원 리스트 보기로 가야함.
response.sendRedirect("/MVC04/memberList.do");
// 가입 실패 -> 예외 객체를 만들어서 WAS에게 던지자.
} else {
throw new ServletException("not insert");
}
} else if (command.equals("/memberRegister.do")) { // 회원 가입 화면
RequestDispatcher rd = request.getRequestDispatcher("member/memberRegister.html");
rd.forward(request, response);
} else if (command.equals("/memberContent.do")) { // 회원 상세보기 화면
int num = Integer.parseInt(request.getParameter("num"));
MemberDAO dao = new MemberDAO();
MemberVO vo = dao.memberContent(num);
// 객체 바인딩
request.setAttribute("vo", vo);
RequestDispatcher rd = request.getRequestDispatcher("member/memberContent.jsp");
rd.forward(request, response);
} else if (command.equals("/memberUpdate.do")) { // 회원 정보 수정
request.setCharacterEncoding("utf-8");
// 1. 파라미터 수집(VO)
int num = Integer.parseInt(request.getParameter("num"));
int age = Integer.parseInt(request.getParameter("age"));
String email = request.getParameter("email");
String phone = request.getParameter("phone");
MemberVO vo = new MemberVO();
vo.setNum(num);
vo.setAge(age);
vo.setEmail(email);
vo.setPhone(phone);
MemberDAO dao = new MemberDAO();
int cnt = dao.memberUpdate(vo);
if (cnt > 0) {
response.sendRedirect("/MVC04/memberList.do");
} else {
throw new ServletException("not update");
}
} else if (command.equals("/memberDelete.do")) { // 회원 정보 삭제
int num = Integer.parseInt(request.getParameter("num"));
MemberDAO dao = new MemberDAO();
int cnt = dao.memberDelete(num);
if (cnt > 0) {
response.sendRedirect("/MVC04/memberList.do");
} else {
throw new ServletException("not delete");
}
}
}
}