@WebServlet(name="frontControllerServletV1",urlPatterns = "/front-controller/v1/*")
public class FrontControllerServletV1 extends HttpServlet {
//key == url , value = controller
private Map<String,ControllerV1> controllerMap = new HashMap<>();
public FrontControllerServletV1() {
controllerMap.put("/front-controller/v1/members/new-form", new MemberFormControllerV1());
controllerMap.put("/front-controller/v1/members/save", new MemberSaveControllerV1());
controllerMap.put("/front-controller/v1/members", new MemberListControllerV1());
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("FrontControllerServletV1.service");
String requestURI = request.getRequestURI();
ControllerV1 controller = controllerMap.get(requestURI);
if (controller == null){
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
controller.process(request,response);
}
}
key는 요청 url 이고 value는 각 url 에 해당하는 컨트롤러인 해쉬맵을 만든다. request.getRequestURI()을 통해 url을 추출하여 해쉬맵에 키를 집어 넣으면 요청 url에 알맞는 컨트롤러가 나오는 것을 볼 수 있다. 각 컨트롤러에서 기존 로직을 수행한다. 해쉬맵에 요청 url인 key 가 없다면 404 상태 코드 반환한다. urlPatterns = "/front-controller/v1/*" * 은 v1 하위 모든 요청을 해당 컨트롤러가 받는다는 뜻이다. ex)/front-controller/v1/a/b , /front-controller/v1/save 등 ..