현재 servlet으로 작성된 파일들은 모두 HttpServlet을 상속받고 있다. 저게 있어야만 이 클래스 파일이 웹에서 작동할 수 있다.
근데 단점이 있다. 웹에서 작동하다보니 http는 어어어어엄청나게 많은 기능을 갖고있다.
즉, 무겁다 그럼 mvc패턴 대로 작성할 때 con이 많이질수록 servlet이 계속 늘어나면 점점 프로그램이 무거워지고 로딩이 느려진다.
이를 방지하고자 나온 개념이 front controller이다.
main에서 값은 .do로 넘긴다.
원래 url mapping값을 따라 각 servlet을 갔지만 이제 servlet을 하나로 합칠꺼기 때문에 main에서 servlet으로 넘길 때 구별할 수 있는 대책이 필요하다. 이를 .do로써 풀어간다.
servlet은 한개만
이제 새로운 디자인 패턴을 배워보자 이를 하기에 여러개로 쪼갰던 servlet파일을 다시 하나로 합쳐야 한다.
그럼 어떻게 servlet은 main에서 무얼 요청했는지 알 수 있단 말인가? 바로 request 객체의 URI에서 알 수있다.
위의 URI를 찍어보면 이렇게 나오는데 위의 빨간 박스를 지우면 된다. 빨간 박스는 context path값이라고도 하며 프로젝트 명이다. 위와 같이 substring을 사용하면 가능하다.
1객체 1역할을 준수하기위해
servlet이었던 파일들은 1개의 servlet으로 바뀌었으며 여러개의 con을 맡고있던 역할을은 java의 class로 대체함으로써 프로그램의 무게를 확 줄였다.
main에서 요청한 url에 따라 각기의 다른 class con으로 넘겨지고 상황에 맞는 command 객체를 생성하여 최종적으로 sql문을 실하기위한, 또 sql문 실행 후 결과값을 반환받는 controller의 역할을 하는 객체를 완성하였다.