본문 바로가기

Java/[패스트캠퍼스] 50일 포트폴리오 챌린지

[11일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring)

수강 강의명

 

프런트 컨트롤러 패턴

모든 요청을 단일 handler(처리기)에서 처리하도록 하는 패턴
스프링 웹 MVC 프레임워크의 DispatcherServlet(프런트 컨트롤러 역할)이 프런트 컨트롤러 패턴으로 구현 됨.
MVC 프레임워크를 만드는 기반 코드로 활용된다.

 

프런트 컨트롤러 실습

DispatcherServlet과 몇 가지 Controller를 만들어 모든 요청을 DispatcherServlet이 받아 적절한 Controller에게 위임한다.

 

의존성 설정

dependencies {
    // 임베디드 톰캣
    implementation 'org.apache.tomcat.embed:tomcat-embed-core:8.5.42'
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:8.5.42'

    // JSP 화면
    implementation 'javax.servlet:jstl:1.2'
    
    // tomcat이 실행하는 Servlet 작성
    implementation 'javax.servlet:javax.servlet-api:4.0.1'

    implementation 'org.reflections:reflections:0.9.12'

    // 로그 출력
    implementation 'ch.qos.logback:logback-classic:1.2.3'

    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

 

동작 과정

① main 메서드를 실행하면 임베디드 톰캣이 실행된다.
    톰캣이 실행되면 지정한 경로 하위에 빌드된 파일이 저장된다.(tomcat 규약에 맞게 경로를 설정해야 함)
    저장되지 않는다면 : Project Structure > Modules > main > Paths > Compiler Output 확인
② DispatcherServlet 생성
     tomcat이 해당 파일을 실행하려면 Servlet이어야 함.(Servlet 상속)
     @WebServlet 애너테이션을 이용하여 어떤 경로로 입력하더라도 DispatcherServlet이 호출되도록 설정
     resources 하위 패키지에 logback 설정 파일(xml)을 생성한다.
③ localhost:8080에 접속하여 임의의 경로를 입력해도 콘솔에 로그가 출력된다.
④ Controller 인터페이스를 생성한다.
⑤ Controller 인터페이스를 구현하는 HomeController를 생성한다.
     HomeController를 호출하면 지정한(홈) 화면이 표시되도록 한다.
⑥ DispatcherServlet에서 사용할 RequestMappingHandlerMapping를 생성한다.
    요청에 해당하는 컨트롤러를 Map에 저장한다. [key : 요청, value : 컨트롤러]
    어떠한 경로도 설정하지 않으면 HomeController를 실행하도록 하는 초기화 메서드를 생성한다.
⑦ DispatcherServlet : 초기화 작업
     tomcat이 HttpServlet을 싱글톤으로 만들면 호출되는 초기화 메서드. map을 초기화하도록 한다.
⑧ DispatcherServlet : 요청이 들어오면 RequestMappingHandlerMapping에게 작업을 위임한다.
     DispatcherServlet : 요청 url를 처리하는 handler를 달라고 요청한다.
     RequestMappingHandlerMapping : 요청 url에 맞는 handler를 반환한다.

 

수강 화면수강 화면
수강 화면

 

요청과 응답을 주고 받는 면이 객체 지향에서 A가 B에게 작업을 위임하는 점과 많이 닮은 거 같다.

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완