Back-End/Spring MVC

    Spring MVC - 로깅, 로그 사용

    Spring MVC - 로깅, 로그 사용 로그란? 프로그램 개발이나 운영시에 발생하는 문제점 파악 및 모니터링을 위해서 기록을 남기는 것 기록 데이터를 분석하여 통계에 사용할 수 있음 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용 스프링 부트 라이브러리에는 스프링 부트 로깅 라이브러리가 포함됨 로깅 라이브러리 Sl4J : Logback, Log4j, Log4J2 등 많은 로그 라이브러리를 통합해서 인터페이스로 제공해주는 라이브러리 Logback : 실제 로그 라이브러리의 구현체 특징 로그 레벨 ERROR : 요청을 처리하는 중 오류가 발생한 경우 WARN : 처리 가능한 문제이지만, 향후 에러의 원인이 될 수 있는..

    스프링 MVC의 구조 이해(2) - 실무에서 사용하는 방식 @RequestMapping, 스프링 MVC 컨트롤러

    @RequestMapping 어노테이션 기반의 컨트롤러를 지원하는 핸들러 매핑과 어탭터 → 핸들러 매핑 / 핸들러 어댑터를 통해 실제 핸들러가 호출 실무에서는 99.9% 이 방식의 컨트롤러를 사용 RequestMapping의 인터페이스 RequestMappingHandlerMapping : RequestMapping의 핸들러 매핑 RequestMappingHandlerAdapter : RequestMapping의 핸들러 어댑터 동작 방식 HTTP Request를 통해 요청 핸들러 매핑 탐색 : HandlerMapping을 순회하며 해당하는 RequestMappingHandlerMapping 반환 핸들러 어댑터 조회 : HandlerAdapter.supports()를 순서대로 호출하며 처리할 수 있는 핸들..

    스프링 MVC의 구조 이해(1) - DispatcherServlet, 핸들러 매핑과 핸들러 어댑터, 뷰 리졸버

    스프링 MVC의 구조 이해(1) - DispatcherServlet, 핸들러 매핑과 핸들러 어댑터, 뷰 리졸버

    현재까지 만든 프레임워크와 스프링 MVC의 비교 직접 만든 프레임워크 스프링 MVC 비교 FrontController → DispatcherServlet handlerMappingMap → HandlerMapping MyHandlerAdapter → HandlerAdapter ModelView → ModelAndView viewResolver → ViewResolver MyView → View DispatcherServlet의 구조 DispatcherServlet도 HttpServlet을 상속받아서 사용하는 서블릿 DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet 스프링부트는 DispatcherServlet을 서블릿으로 자동 등록하..

    자바 백엔드 웹 기술의 진화과정(3) -  웹 프론트 컨트롤러 v4, v5

    자바 백엔드 웹 기술의 진화과정(3) - 웹 프론트 컨트롤러 v4, v5

    자바 백엔드 웹 기술의 진화과정(3) - 웹 프론트 컨트롤러 v4, v5 프론트 컨트롤러 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 요청에 맞는 컨트롤러를 찾아서 호출 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 단계적으로 도입 v1 : 프론트 컨트롤러 패턴의 도입 v2 : view render를 처리해주는 ****MyView 도입 v3 : 서블릿 종속성 제거 및 뷰의 물리경로를 가지는 뷰 리졸버의 사용 v4 : v3코드에서 컨트롤러가 직접 뷰의 논리 이름을 반환하도록 변경 v5 : 어댑터(Adapter) 패턴의 도입 → 다양한 종류의 컨트롤러 처리 V4 - 컨트롤러의 ViewName반환 기존 V3구조에서 Controller가 ModelView객체가 아닌 ..

    자바 백엔드 웹 기술의 진화과정(2) -  웹 프론트 컨트롤러 v1, v2, v3

    자바 백엔드 웹 기술의 진화과정(2) - 웹 프론트 컨트롤러 v1, v2, v3

    자바 백엔드 웹 기술의 진화과정(2) - 웹 프론트 컨트롤러 v1, v2, v3 서블릿 → JSP → MVC패턴 → 프론트 컨트롤러 패턴 → 스프링MVC 프론트 컨트롤러 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 요청에 맞는 컨트롤러를 찾아서 호출 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 단계적으로 도입 v1 : 프론트 컨트롤러 패턴의 도입 v2 : view render를 처리해주는 MyView 도입 v3 : 서블릿 종속성 제거 및 뷰의 물리경로를 가지는 뷰 리졸버의 사용 v4 : v3코드에서 컨트롤러가 직접 뷰의 논리 이름을 반환 v5 : 어댑터(Adapter) 패턴의 도입 → 다양한 종류의 컨트롤러 처리 FrontController는 스프링 웹 MV..

    자바 백엔드 웹 기술의 진화과정(1), 서블릿, jsp, MVC 패턴

    자바 백엔드 웹 기술의 진화과정(1), 서블릿, jsp, MVC 패턴

    Java 백엔드 웹 기술의 발전과정에 따라서 순차적으로 적용시켜 볼 예정 서블릿 → JSP → MVC패턴 → 프론트 컨트롤러 패턴 → 스프링MVC 서블릿 방식 회원 등록 폼 @WebServlet(name= "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response)..

    서블릿의 사용, HttpServletRequest, HttpServletResponse

    서블릿의 사용, HttpServletRequest, HttpServletResponse

    서블릿 사용 & 등록 서블릿 사용 @ServletComponentScan : Springboot환경에서 서블릿을 등록할수 있도록 지원하는 어노테이션 @ServletComponentScan //서블릿을 사용하겠다는 선언 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); } } 서블릿 등록 과정 @WebServlet : 서블릿의 이름과 연결 url을 지정시켜주는 어노테이션 HttpServlet 클래스 상속 protected 접근 지정자인 service() 메서드를 Override → 서블..

    [Spring MVC] - 웹 애플리케이션의 이해(HTTP, WAS, Servlet, 멀티 쓰레드, CSR, SSR)

    [Spring MVC] - 웹 애플리케이션의 이해(HTTP, WAS, Servlet, 멀티 쓰레드, CSR, SSR)

    HTTP HTML 문서와 같은 리소스들을 가져올 수 있게 해주는 응용 계층 프로토콜 JSON, XML(API), 이미지, 음성, 영상 파일 등 거의 모든 형태의 데이터 전송 가능 서버같에 데이터를 주고 받을 떄도 HTTP를 사용 웹 서버 및 웹 애플리케이션 서버(WAS) 웹 서버 HTTP기반으로 동작 정적 리소스 제공, 기타 부가 기능 정적 HTML, CSS, JS, 이미지, 영상 등 EX) NGINX, APACHE 웹 애플리케이션 서버(WAS) HTTP기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공) 프로그램 코드를 실행해서 애플리케이션 로직 수행 → 동적인 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC EX) 톰캣, Jetty, Undertow 등 웹서버와 웹 애플리케..