관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

[쇼핑몰 홈페이지 제작] 상품과 회원 관리 5 - 메인 페이지 만들기 3 : MVC 패턴으로 서블릿 제작 및 Controller 역할 추가하기 본문

웹 · 앱 개발/JSP & Servlet

[쇼핑몰 홈페이지 제작] 상품과 회원 관리 5 - 메인 페이지 만들기 3 : MVC 패턴으로 서블릿 제작 및 Controller 역할 추가하기

huenuri 2024. 12. 22. 08:55

오늘의 첫번째 학습일지를 써본다. 어제 정말 많은 학습일지를 썼는데 오늘도 그만큼 열심히 공부하며 공부 기록을 남길 것이다. 

이어서 메인 페이지를 만드는 코드를 작성해볼 것이다. 이번에는 MVC 패턴을 활용해서 서블릿을 제작하려고 한다.


 

 

 

 

 

메인 페이지 만들기 세 번째

MVC 패턴에서는 컨트롤러를 통해서 모델과 뷰를 결정하기 때문에 Nonage Shop의 메인 화면을 확인하기 위해서는 다음과 같이 요청할 것이다.

 

 

위와 같은 형태로 요청을 하기 위해서는 11장에서와 마찬가지로 MVC 패턴에서 컨트롤러(Controller)로서의 역할을 하는 서블릿을 만들어야 한다. 


 

 

 

 

[직접 해보기] MVC 패턴의 Controller로서의 역할을 하는 서블릿 만들기

 

 

이렇게 쿼리 스트링을 보내면 처음에는 null이었던 것이 index로 요청을 받음을 확인할 수 있다.

 

요청이 들어오면 액션 객체에서 모든 비즈니스 로직을 수행하고 뷰를 결정한다. 액션 클래스들은 요청에 대해서 동일한 메소드(execute)로 처리하도록 하기 위해서 인터페이스(Action)의 상속을 받도록 한다. 


 

 

 

 

 

[직접 해보기] 요청 처리를 추상 메소드를 위한 인터페이스 만들기

다음은 요청에 대한 처리를 담당할 추상 메소드를 갖는 인터페이스를 만든다. 이렇게 만든 인터페이스를 모든 액션 클래스가 상속 받도록 할 것이다.


 

 

 

 

[직접 해보기] 커맨드(command) 패턴으로 작업 처리를 위한 명령 처리 클래스 만들기

요청이 들어왔을 때 어떤 액션 객체가 동작해야 하는지 판단하여 액션 객체를 생성해 주는 일을 담당하는 클래스인 ActionFactory를 만든다.

 

요청은 서블릿에서 1차적으로 받지만 받은 요청에 따라 어떤 액션 객체를 생성할 것인지는 ActionFactory 객체의  getAction() 메소드가 요청 파라미터에 의해서 결정하여 알려준다.


 

 

 

 

[직접 해보기] MVC 패턴의 Controller로서의 역할을 하는 서블릿 수정하기

이미 만들어 놓은 서블릿에서 ActionFactory의 getAction()에 요청 파라미터 값을 넘겨주어 요청에 따른 액션 객체를 얻어온 후에 execute() 메소드를 호출하여 요청에 대한 처리가 일어나도록 한다. 

 

 

이제 ActionFactory에서 요청을 받을 수 있게 되었다.

 

ActionFactory의 getAction() 메소드에서 요청에 따라 액션 객체가 생성되어야 하기 때문에 이를 위한 액션 클래스를 설계하겠다. index란 요청에 대해서는 메인 화면이 출력되어야 합니다. 메인 화면에서는 신상품과 베스트 상품이 진열되어야 하기 때문에 데이터베이스에서 상품 정보 얻어오는 비즈니스 로직을 수행한 후에 메인 페이지인 index.jsp로 이동하도록 
해야 한다. 다음은 메인 페이지를 위한 요청이다.


 

 

 

 

[직접 해보기] 메인 화면을 출력하기 위한 액션 클래스

NonageServlet?command=index라는 요청에 의해서 신상품과 베스트 상품을 메인 페이지에 게시하도록 하는 액션 클래스를 만들겠다.


 

 

 

[직접 해보기] 커맨드 패턴으로 작업 처리를 위한 명령 처리 클래스 ActionFactory 수정하기

index란 커맨드(command)에 대해 알맞은 작업을 처리하기 위한 액션 객체를 ActionFactory의 getAction()에서 생성될 수 있도록 다음과 같이 코드를 추가한다.

 

MVC 패턴에서는 요청을 서블릿에 보내서 적당한 액션 객체가 생성되어 execute() 메소드가 실행되어 데이터베이스에서  상품 정보를 얻어온 값을 뷰(jsp)에 전달하여 데이터베이스에 저장된 상품 정보를 사용자가 볼 수 있도록 한다.

 


 

 

 

 

학습을 마치고

어제 이 부분까지 하려고 했었는데 오늘 아침에 늦은 시간에 일어나서 진행하는 중이다. 이제 메인 페이지는 대략 완성되었고 상세 페이지를 만드는 일이 남아있다. JSP 공부를 착실히 해두니 홈페이지를 만드는 일도 별로 어렵지 않은 것 같다.