프로그래밍

[Web] day47 : JSP 프레임워크 구조 적용하기(FrontController 패턴) 본문

Web/Web

[Web] day47 : JSP 프레임워크 구조 적용하기(FrontController 패턴)

시케 2023. 8. 7. 00:51
728x90
반응형

2023.07.14.월

JSP 프레임워크 구조 적용하기

JAVA에서 MVC를 적용한것처럼 JSP 프레임워크 구조를 적용해보자

 

현재 Controller는 .jsp 파일로 이루어져 있지만 전부 자바 코드이다

그렇다면 굳이 jsp 파일이 아닌 자바에서 작성하는 것이 보다 더 효율적이다

(해당 발상으로 나오게 된 방식이 스프링)

 

자바 파일은 원래 컴파일하면 서블릿(Servlet)으로 변환된다

어차피 jsp내용 또한 자바이므로 Controller를 서블릿으로 변경할 것이다

다만 Servlet(서블릿)은 NOT POJO 이기 때문에 POJO로 작업은 불가하다

 

JSP 프레임워크 구조 적용

1. 기존의 controller.jsp를 Controller.java(servlet)으로 이동

 

2. Controller.java(Servlet) 파일을 모듈화

현재 Controller.java(Servlet)은 모든 코드를 다 하나의 .java파일에서 관리하고 있다

이 중에 하나의 action에만 이상이 발생해도 전체가 작동이 되지 않을 수 있다

이를 모듈화하면 보다 경량인 POJO로 작업할 수 있으며 action별의 유지보수에도 유리하다

 

※ Q. 객체를 action 클래스에서 매번 생성하면 비효율적인것 아닌가?

기존 방식에서도 controller.jsp 방문하면 다 매번 객체를 생성해왔었다

그러나 필요없는 객체 또한 일돨적으로 모두 생성하였기 때문에 오히려 코더가 필요한만큼 관련된 것만 생성하는 현재의 방식이 보다 더 효율적이다

 

3. excute() 인터페이스 정의

이로써 excute()라는 메서드 시그니처가 동일한 메서드를 구현해야 하는 XXXAction 류의 클래스들을 정의할 필요가 생기게 된다. 해당 메서드 시그니처를 강제하여야 되기 때문에 excute() 인터페이스 정의하여 Action클래스를 구현한다

 

"인터페이스"

  • 메서드 시그니처를 지켜줌
  • public 키워드 자동으로 붙음
    모든 인터페이스 메서드는 전부 public임
  • 오버라이딩 @ 어노테이션

 

4. ActionForward 클래스 생성(응답용 VO)

요청 처리가 완료되면 사용자에게 "응답"해야한다

JAVA는 output을 2개 이상 전달하지 못하므로 VO를 만들어서 전달한다

  • 전달할 데이터 존재 → foward
  • 전달할 데이터 없음 → response

 

JSP 프레임워크 구조 흐름

  1. Client(브라우저, 사용자)가 보낸 요청 추출
    어떤 요청(액션)을 하고싶었던건지 파악
  2. 추출한 요청에 맞는 Action 클래스의 excute() 메서드를 호출
    요청 처리
  3. 요청 처리가 완료되면 사용자에게 "응답"
    View로 이동(데이터 유무 확인)
    foward / redirect

FrontController 패턴

Action 인터페이스 상속 받아서 excute()로 요청처리 모듈화
execute()의 output이 ActionForward 객체인 패턴

.do 와 .jsp 구분 사용
컨트롤러 / 뷰

이렇게 FrontController 패턴을 구현해보았다

 

https://github.com/jihyean/Web/tree/main/day47

 

728x90
반응형

'Web > Web' 카테고리의 다른 글

[Web] day49 : 페이지네이션  (0) 2023.08.07
[Web] day48 : Set 구조  (0) 2023.08.07
[Web] day44 : 리스너  (0) 2023.08.06
[Web] day43 : 필터(.java 클래스)  (0) 2023.08.06
[Web] day43 : POJO와 NOT POJO  (0) 2023.08.06
Comments