Spring MVC

MinJi·2024년 7월 12일

Spring MVC

  • 스프링 프레임워크에서는 클라이언트의 화면을 표현하기 위한 뷰(View) 영역과 서비스 수행을 위한 비지니스 로직 영역을 나누는 MVC2 패턴을 지원한다.
  • 모델(Model), 뷰(View), 컨트롤러(Controller) 사이의 의존 관계를 DI 컨테이너에서 관리하여 유연한 웹 애플리케이션을 쉽게 구현 및 개발할 수 있다.

요청 처리 과정

  • 디스패처 서블릿(DispatcherServlet)은 사용자의 요청을 받는 프론트 컨트롤러 서블릿이다.
  • 핸들 매핑(HandlerMapping)은 요청 URL을 바탕으로 적절한 컨트롤러를 선택하는 역할을 한다.
  • 컨트롤러(Controller)는 요청을 처리하기 위한 빈이다. (클라이언트의 요청을 처리 후 반환한다.)
  • 뷰 리졸버(ViewResolver)는 디스패처 서블릿에서 전달해 주는 뷰의 이름과 실제로 구현된 뷰를 매핑해준다.

    - 1과 7 사이에는 Filter 존재
    - 3과 5 사이에는 Intercepter 존재 : 사이에서 요청과 응답 가로챈다.

Log4j

로그 레벨

fetal > error > warn > info > debug > trace

  • trace(1단계): 가장 낮은 로그 레벨이며, debug보다 정보를 훨씬 상세하게 기록할 경우에 사용한다.
  • debug(2단계): 디버깅 목적으로 사용한다.
  • info(3단계): 주요 이벤트나 상태 등의 일반 정보를 출력할 목적으로 사용한다.
  • warn(4단계): 문제가 발생할 가능성이 있는 상태나 상황 등(비교적 작은 문제)에 관한 경고 정보를 출력할 목적으로 사용한다.
  • error(5단계): 심각한 문제나 예외 상황 등(비교적 큰 문제)에 대한 오류 정보를 출력할 목적으로 사용한다.
  • fatal(6단계): 가장 높은 로그 레벨이며, 프로그램 기능의 일부가 실패하거나 오류가 발생하는 등 아주 심각한 문제에 관한 정보를 출력할 목적으로 사용한다.

[ log4j.xml 파일 ]

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
  <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

      <!-- Appenders -->
      <appender name="console" class="org.apache.log4j.ConsoleAppender">
          <param name="Target" value="System.out" />
          <layout class="org.apache.log4j.PatternLayout">
              <param name="ConversionPattern" value="%-5p: %c - %m%n" />
          </layout>
      </appender>

      <!-- Application Loggers -->
      <logger name="com.beyond.mvc">
          <level value="debug" />
      </logger>

      <!-- 3rdparty Loggers -->
      <logger name="org.springframework.core">
          <level value="debug" />
      </logger>

      <logger name="org.springframework.beans">
          <level value="debug" />
      </logger>

      <logger name="org.springframework.context">
          <level value="debug" />
      </logger>

      <logger name="org.springframework.web">
          <level value="debug" />
      </logger>

      <!-- Root Logger -->
      <root>
          <priority value="debug" />
          <appender-ref ref="console" />
      </root>

  </log4j:configuration>
  • layout 태그 내의 param 태그의 value 값은 출력 형식을 나타낸다
  • p는 패키지명, c는 클래스명, m은 사용자가 입력한 메세지

Spring MVC 실습

https://github.com/mjms0214/BEYOND_SW_CAMP_8/tree/main/framework/03_SpringMVC

0개의 댓글