[    JSP FrontController 패턴, Command 패턴, RequestDispatcher를 이용한 forward에 대하여...    ]





- FrontController 패턴이란?

모든 요청을 하나의 서블릿 파일에서 받아서 처리하는 방식


- Command 패턴?

FrontController에서 받은 요청을 분석해 어떤 처리가 필요한지에 따라서 각 처리에 필요한 Command 객체를

할당해 그곳에서 처리한 뒤 필요한 데이터를 가지고 FrontContrller로 보내주고 그 데이터를 request 객체 등에

세팅해 RequestDispatcher 객체를 통해서 화면 전환시 request, response 객체를 함께 전달해주는 방식

이때, RequetDispatcher 객체의 특징!!

: 현재 페이지의 request, response 객체를 그대로 전달할 수 있다.!



- frontControllerEx.jsp
: 하나는 insert.do로 하나는 delete.do 라는 uri로 요청을 하고 있다. 단 둘 다 .do로 끝나는 패턴을 채택하고 있다.



- FrontController.java
.do로 끝나는 모든 요청을 받을 수 있도록 @WebServlet을 통해 서블릿 맵핑이 되어 있다.
또한, get방식이든 post 방식이든 모두 actionDo라는 메서드를 수행하도록 되어 있고 해당 메서드에서는
요청받은 uri를 가지고 와서 어떤 작업이 필요한지 command를 분석한다.

분석하고 처리에 필요한 Service를 지정해 해당 service에서는 dao에 접근해 데이터를 처리하고 FrontController로 반환해준다.
service를 통해 가지고 온 데이터는 request 객체에 저장하고
해당 requets 객체와 response객체를 데이터를 뿌려줄 화면으로 전달하기 위해
RequestDispatcher 객체를 사용해서 전달해준다.
이 객체의 특징은 현재 페이지의 request, response 객체를 그대로 전달할 수 있다는 점이다!!


- Service 인터페이스
: 다형성 적인 측면과 코드의 관리적 측면 때문에 모든 커맨드 객체들을 포함할 수 있도록 Service 인터페이스를 만들고
모든 Command 객체들은 이 Service 인터페이스를 implements 하도록 구현한다. 이때 execute 메서드를 재구현 할 수 있도록
execute 메서드를 선언해 놓는다.


- 각 처리에 필요한 Command 클래스 중 하나
: Service 인터페이스를 구현하고 execute 메서드를 재정의한다.
실재로 이 커맨드 객체에서 dao를 통해 DB에 접근해서 원하는 데이터를 가지고 오는 작업을 해야하지만
현재 코드에서는 생략하도록 하였다.


- FrontController에서 request 객체에 세팅한 값들을 가지고오는 페이지이다.



+ Recent posts