JSP - 27. 프론트컨트롤러 + 커맨드패턴

갓김치·2020년 12월 24일
0

JSP+Spring

목록 보기
28/43

ioc패턴을 적용한 프레임워크

프론트 컨트롤러 + 커맨드패턴

  1. 프론트컨트롤러 생성
  • 중복코드 처리
  • 유일한 서블렛, 백엔드 컨트롤러는 서블릿이 아니다
  1. 커맨드패턴 적용
  • 프론트컨트롤러가 요청을 분석하여 백엔드 컨트롤러에게 넘김
  • 백엔드컨트롤러 메서드의 시그니처에 따라 요청을 보내야하는데, 그 시그니처에 맞게 코드를 일일이 짜려면 종속성/결합력 발생함
  • 커맨드 패턴 (=> Invoker가 reflection 기반으로 백엔드컨트롤러를 호출) 으로 해결하자
  • 프론트컨트롤러가 받는 요청에는 invoker가 어떤 컨트롤러를 호출해야할지
  • 백엔드컨트롤러에는 웹서블릿 대신할 커스텀 어노테이션을 만들자
  • 어떤 컨트롤러가 어느 어노테이션을 가지고있는지 '어노테이션 트레이싱'을 해야함
    • 어노테이션 트레이싱을 맡은 컴포넌트
      • 1) 어노테이션 수집하여 맵으로 관리하는 역할 (key: 요청, value: 요청처리자)
      • 2) 하나의 커맨드를 발생했을때 그걸 처리하는 핸들러를 검색해주는 역할
      • 3) 검색 마치고 다시 프론트에게 어떤 컨트롤러가 필요하다고 알려주는 역할

진행순서

  • 프론트 -> 맵가지고있는애 -> 프론트 -> invoker -> 백엔드 컨트롤러(scope, 논리적뷰네임을 리턴) -> invoker -> 프론트컨트롤러

리팩토링

  1. 프론트컨트롤러 생성후 web.xml등록
  2. 기존 컨트롤러 상속없애고 오버라이드지우고 웹서블릿주석
  3. 기존 컨트롤러 중복소스 잘라내어 프론트로 옮김
  4. 커맨드패턴적용

개발순서 (다이어그램 참고)

  1. FrontController
  2. Enum RequestMethod
  3. @RequestMapping
  4. @Controller
  5. RequestMappingCondition
  6. RequestMappingInfo

과제

  • 거래처관리
  • 갖고있는 서블릿,컨트롤러에 최대한많이 프레임워크적용하기

다음주

  • 필터이용한 ㄱ보안 (접근제어) -> 추후 프레임워크 만들예정
  • 파일업로드
profile
갈 길이 멀다

0개의 댓글