본문 바로가기

Spring/Spring MVC6

메시지/국제화 스프링은 기본적인 메시지 관리 기능을 제공. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource 를 스프링 빈으로 등록하면 되는데, MessageSource 는 인터페이스이다. 따라서 구현체인 ResourceBundleMessageSource 를 스프링 빈으로 등록하면 된다. 여기서 스프링 부트는 자동으로 MessageSource를 스프링 빈으로 등록한다. MessageSource 를 스프링 빈으로 등록하지 않고, 스프링 부트와 관련된 별도의 설정을 하지 않으면 messages 라는 이름으로 기본 등록된다. 따라서 messages_en.properties , messages_ko.properties , messages.properties 파일만 등록하면 자동으로 인식된다 messag.. 2024. 4. 22.
MVC 5 - (검증오류), 로그인, 필터, 인터셉터, 예외처리 코드를 직접 따라치면서 공부하고 싶지만 남아있는 시간 상 꽤 힘든 계획일 거 같다고 생각했다. 전체적인 흐름을 이해하면서 프로젝트를 진행할 때 해당 기능과 관련된 문제들이 생긴다면 따로 또 찾아가면서 공부하는 방식으로 부족함을 채워야 할 것 같다. 아쉽지만 기존의 모든 코드를 따라치면서 하는 학습은 캠프 종료 기간 후로 미루고 지금은 각 기능들의 원리와 어떤 종류의 기능이 있는지 알아가는 방식으로 학습방향성을 정했다. 메세지, 컨버터, 파일업로드 부분은 아쉽지만 잠깐 미루고 5가지 항목을 우선적으로 공부하였다. 이후 데이터 접근 기술에 대해서도 공부해야하기에 최대한 효율적으로 하고자 노력했다. 실제 프로젝트에 가기전 까지 시간이 남는다면 내가 이해가 부족했던 부분의 강의를 부분적으로 코드를 작성하면서 공.. 2023. 6. 27.
MVC 4 - 검증 및 오류 처리 기존에는 데이터에 직접 들어올 수 없는 값이 들어오면 바로 오류페이지로 넘어갔다. 이 경우는 사용자에게 불편을 초래하기 때문에 오류가 있을 경우 해당 오류의 이유와 이를 쉽게 고쳐서 다시 서비스를 이용할 수 있도록 하게끔 프로그래밍을 해야한다. 따라서 기존의 오류페이지가 아닌 데이터를 입력하는 페이지에서 사용자가 다시 데이터 입력을 시도할 수 있도록 프로그래밍 하고 이 검증 로직을 발전시키는 것이 이번 챕터의 목표. V1 Map errors = new HashMap(); 컨트롤러에 error와 error에 관한 메세지를 처리하기 위한 Map 형식의 errors를 만든다. if (!StringUtils.hasText(item.getItemName())) { errors.put("itemName", "상품 .. 2023. 6. 25.
MVC 3 - Spring MVC Dispatcher Servlet 오버라이딩 된 메서드 service 호출 (frontcontroller) doDispatch() 를 이전에 작성한 V5와 비교해보자. Object handler = getHandler(request); // v5 핸들러 조회 MyHandlerAdapter adapter = getHandlerAdapter(handler); // 핸들러 어댑터 조회 ModelView mv = adapter.handle(request, response, handler); // 핸들러 어댑터 실행, 핸들러 어댑터를 통해 핸들러 실행, ModelView 반환 MyView view = viewResolver(viewName); // 뷰 리졸버 view.render(mv.getModel(), req.. 2023. 6. 23.
MVC 2 - FrontController과 프레임워크의 확장 보다 가독성을 위해 버전들 사이에서 중복되는 코드들은 제거하고 핵심적으로 바뀌는 부분들을 코드블럭에 담았다. 이를 참고 v1: 프론트 컨트롤러를 도입 기존 구조를 최대한 유지하면서 프론트 컨트롤러를 도입 기존의 controller에서 반복되는 코드의 제거와 직관성을 위해 모든 controller에서 실행되는 공통의 로직들을 frontController로 가져온다. @WebServlet(name = "frontControllerServletV1", urlPatterns = "/front-controller/v1/*") public class FrontControllerServletV1 extends HttpServlet { private Map controllerMap = new HashMap(); pub.. 2023. 6. 22.
MVC 1 - 서블릿, JSP 웹 서버, WAS 웹 서버 HTTP 기반으로 동작, 정적 리소스 제공 인터넷에서 클라이언트로부터 HTTP 요청을 받아들이고, 해당 요청에 대한 응답을 제공하는 소프트웨어 클라이언트와의 통신을 관리하고 요청된 리소스를 찾아서 클라이언트에게 전달 클라이언트는 웹 서버에 HTTP 요청을 보내고, 서버는 요청된 리소스를 찾아서 클라이언트에게 응답 이 과정에서 웹 서버는 HTTP 프로토콜을 히해하고 처리할 수 있는 기능 웹 애플리케이션 서버 (WAS) HTTP 기반으로 동작, 웹 서버의 기능을 포함해서 프로그램 코드의 애플리케이션 로직 수행. 즉 동적 HTML, JSON이 주로 쓰이는 HTTP API, 서블릿, JSP, 스프링 MVC 등 둘의 경계는 현재 모호, 다만 웹 애플리케이션 서버는 애플리케이션 코드를 실.. 2023. 6. 21.