MVC1의 전체적인 설계
MVC2의 전체적인 컴포넌트 설계
차이는 Controller의 사용이고 mvc2 방식을 선호한다.
아키텍쳐
모든 것을 컨트롤러 를 통해 모델 , 뷰 를 선택해 보여준다.
package com.example.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("*.test") //1.확장자패턴을 씁니다 (~~~~.test로 끝나면 맵핑)
public class TestController extends HttpServlet {
private static final long serialVersionUID = 1L;
public TestController() {
super();
}
//2. get/post 요청도 하나로 모은다
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request,response);
}
protected void doAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//3. URL주소를 분기(각 요청별로 코드를 만든다)
request.setCharacterEncoding("utf-8");
String uri =request.getRequestURI();
String path =uri.substring(request.getContextPath().length());
System.out.println(path);
if(path.equals("/controller/join.test")) {
//회원가입~~~~ 처리로직
}else if(path.equals("/controller/modify.test")){
//정보수정 처리로직
}else if(path.equals("/controller/delete.test")){
//회원탈퇴 처리로직
}else if(path.equals("/controller/logout.test")){
//로그아웃 처리로직
}
}
}