Dispatcher-Servlet란?HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러과거와 비교과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해주어야 했지만, dispatcher-servlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리면서 상당히 편리하게 이용할 수 있게 되었습니다. 우리는 컨트롤러를 구현해두기만 하면 디스패처 서블릿가 알아서 적합한 컨트롤러로 위임을 해주는 구조가 되었습니다.정적 자원 처리1. 정적 자원 요청과 애플리케이션 요청을 분리/apps 의 URL로 접근하면 Dispatcher Servlet이 담당한다./resources 의 URL로 접근하면 Dispatcher Servlet..
Spring MVC란?웹 계층에 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 있는데 이를 스프링 웹 MVC(spring-web-mvc) 또는 스프링 MVC라고 한다.Spring MVC는 클라이언트의 요청을 편리하게 해주는 기능을 제공동작 방식과 구성 요소DispatcherServletDispatcherServlet은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작한다. [CS] Spring Dispatcher-ServletDispatcher-Servlet란?HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러과거와 비교과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해no-delay.tistor..
Spring Framework란?자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크경량급과거 EJB가 느리고 무거운 자바 서버(WAS)에서만 동작한 반면, 스프링은 WAS로부터 독립적인 개발 환경을 구축할 수 있습니다. 가장 단순한 서버환경인 톰캣(Tomcat)이나 제티(Jetty) 위에서도 완벽하게 동작애플리케이션 프레임워크특정 계층이나, 기술, 업무 분야에 국한되지 않고 애츨리케이션의 전 영역을 포괄하는 범용적인 프레임워크 IoC(제어의 역행)코드의 최종 호출을 개발자가 결정하는 것이 아니라 스프링 프레임워크 내부에서 이루어지는 것스프링은 이미 구조가 설계되어 있어, 스프링을 사용하는 개발자는 부품을 만들어 조립하는 형태로 개발합니다. 이는 객체의 의존성을 역전시켜 객체 간..
PSA(Portable Service Abstraction)란?환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조(하나의 추상화로 여러 서비스를 묶어둔 것)특정 클래스가 추상화된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것이 PSA의 기본 개념PSA가 적용된 코드는 개발자의 기존에 작성된 코드를 수정하지 않으면서 확장할 수 있으며, 어느 특정 기술에 특화되어 있지 않음 -> 확장성 높음왜 사용하나요?어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지하여애플리케이션에서 사용하는 기술이 변경되더라도 최소한의 변경만으로 변경된 요구 사항을 반영하기 위해 사용 => PSA를 통해서 애플리케이션의 요구 사항 변경에 유연하게 대처 가능 Spring은 상황..
Interceptor란?org.springframework.web.servlet의 HandlerInterceptor 인터페이스로, 스프링 MVC에서 웹 애플리케이션 내에 특정한 uri 호출을 가로채는 역할을 함특징Dispatcher Servlet이 Controller를 호출하기 전 / 후에 인터셉터가 끼어들어 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공Request, Response 조작 불가능스프링 컨텍스트에서 동작처리 과정디스패처 서블릿이 핸들러 매핑을 통해 컨트롤러를 찾도록 요청하는데, 그 결과로 실행 체인(HandlerExecutionChain)을 돌려줌여기서 1개 이상의 인터셉터가 등록되어 있다면 순차적으로 인터셉터들을 거쳐 컨트롤러가 실행되도록 하고,인터셉터가 없다면 바로 컨트롤러를 ..
DI란?의존성 주입(외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴), 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입하는 방식과정A 객체에서 B, C 객체를 의존할 때, A 객체에서 B, C 객체를 직접 생성하는 것이 아니라 외부(IoC 컨테이너)에서 생성된 객체를 주입인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮춤객체 자체가 코드 상에서 객체 생성에 관여하지 않아도 돼서 객체 사이의 의존도 낮출 수 있음DI(의존성 주입) 3가지 방법1. 생성자 주입@Controllerpublic class PetController{ private final PetService petService; @A..
MVC(Model View Controller) Model 요청에 대한 실직적인 처리 담당 service, dao(Data Access Object)(데이터 접근 객체) 단순 클래스 파일 View 클라이언트에게 보여줄 결과 페이지 요청 처리, DB 관련 코드X, 단순히 화면 출력 jsp, html Controller 요청 처리에 대한 전반적인 흐름 제어 Servlet 파일 흐름 제어 순서 요청 받기 요청 관련 파라미터 추출하고 필요하다면 가공 Model에 요청 처리 넘기기(메서드 호출) 처리 결과를 받아서 View 반환 넘겨줄 게 있다면 forward / 없다면 redirect Spring MVC Architecture