전체 글

직렬화 / 역직렬화HttpMessageConverter 역할지난 포스팅에서 Controller의 처리 / 반환에 대해 MessageConverter를 언급했었지만 정확히는 "HttpMessageConverter"라고 한다. HttpMessageConverter는 Spring MVC에서 요청과 응답의 HTTP 메세지 바디를 변환하는데 사용된다. Spring 요청 본문을 Java 객체로 역직렬화하고, 응답 본문을 Java 객체에서 JSON, XML 등으로 직렬화하는 과정을 자동으러 처리한다. Spring은 다양한 기본 구현체를 제공하지만, 필요에 따라 개발자가 커스텀 MessageConverter를 만들 수도 있다.HttpMessageConverter 동작원리HttpMessageConverter는 클라이언트..
ViewResolver, @ResponseBody, MessageConverter웹 페이지(HTML) 반환과 웹 데이터(JSON) 반환Spring MVC에서 Controller는 사용자의 요청을 처리한 뒤 ,그 결과를 반환한다. 이때 반환 타입에 따라 DispatcherServlet은 HTML 페이지를 렌더링하거나, 데이터를 JSON 형식으로 반환하는 등 다른 방식으로 응답을 처리할 수 있다. Spring에 위임되어 Controller 에서 처리한 모든 응답은 Front Controller에게 반환 타입을 고려해 반환Front Controller인 DistpatcherServlet은 앞선 Controller가 반환한 타입에 따라 View 생성DispatcherServlet은 HandlerAdapter의 ..
요청을 받아, 그에 대한 처리 뒤, 응답을 반환한다.Spring Controller의 동작 원리Spring MVC에서 Controller는 사용자의 요청을 받아 처리한 뒤 그에 따른 응다블 반환하는 역할을 한다. 이 때 Controller는 단독으로 동작하는 것이 아니라, DispatcherServlet이라는 Front Controller를 통해 요청을 처리한다. Spring은 이 구조를 통해 클라이언트의 요청을 일관되게 관리하고 적절한 Controller로 라우팅한다. DispatcherServlet과 요청 처리 흐름Spring MVC에서 모든 요청은 먼저 DispatcherServlet에 의해 처리된다. DispatcherServlet은 클라이언트로부터 들어온 요청을 Controller로 전달하고, ..
데이터(Model), 화면(View), 연결해주는 ControllerSpring MVC 원리Spring MVC는 Model-View-Controller 패턴을 기반으로 하여, 웹 애플리케이션의 다양한 구성 요소가 역할을 분담하여 동작한다.이 구조는 특히 동적 웹 페이지를 처리하는데 중요한 역할을 한다. 1. 템플릿 엔진과 동적 웹페이지동적 웹 페이지를 만들기 위해서는 반복적인 템플릿(ViewTemplate)과 데이터(Model)가 필요하다. 예를 들어, 1000명의 유저 정보를 표시하는 페이지를 만들 때, 하나의 HTML 템플릿과 데이터베이스에 저장된 1000명의 정보를 결합하 동적 웹 페이지를 생성할 수 있다.ViewTemplate: 반복적으로 사용되는 웹 페이지의 틀(HTML)Model: 실제 데이터..
정적, 동적, @Controller, @RequestMappingSpring에서 정적 및 동적 페이지 반환하기Spring의 Model-View-Controller(MVC) 패턴을 활용하여, 정적 페이지와 동적 페이지를 어떻게 반환하는지 알아보자.1. 정적 페이지 반환: 기본 에러 페이지 처리Spring은 기본적으로 ErrorController를 통해 정적 에러페이지를 처리한다. 이때 특정 상태코드(404, 500 등)에 따라 정적 HTML파일을 반환할 수 있다. BasicErrorController라는 Spring의 기본 구현체를 통해, 사용자 정의 Controller 없이도 정적 에러페이지를 처리할 . 수있다. @Controllerpublic class CustomErrorController imple..
Collection 각각의 요소에 함수형 프로그래밍을 도입Java 8의 StreamStream의 등장 이유: Collection 각각의 요소에 대한 함수형 프로그래밍을 도입하자Stream은 Java 8에서 도입된 함수형 프로그래밍 도구로, 기존 컬렉션 처리 방식의 한계를 해결하기 위해 등장했다.기존에는 for, while 같은 외부 반복을 사용해 컬렉션 요소를 처리했지만, Stream은 이러한 처리를 내부에서 수행하여 더 간결하고 유연하게 만든다.외부 반복: 루프를 통해 외부에서 컬렉션 요소를 처리.내부 반복: Stream을 사용해 내부에서 컬렉션 요소를 처리.Stream 이전의 자바 컬렉선 처리 방식 (외부 반복):for (String string : list) { if (string.contai..
Null  내부 처리Java 8의 OptionalOptional의 등장 이유: Null을 외부가 아닌 내부에서 처리Optional 클래스는 NullPointerExceptio 문제를 해결하기 위해 도입된 개념으로, 자바에서 null을 처리하는 번거로움을 해결하기 위한 도구이다. 이전에는 null 체크를 외부에서 직접 처리해야 했으나, Optional을 사용하면 null 상태를 객체 내부에서 처리할 수 있다.굴뚝굴뚝 밖에서 Null 처리 : 외부에서 if문을 사용하여 null 값을 직접 확인굴뚝 안에서 Null 처리: Optional 객체를 사용하여 내부에서 null 여부를 다룸Optional이 없던 시절 자바에서 Null 처리하는법과 자바스크립트에서 Null 처리 하는 법/* 주문 */public cla..
냄새나는 코드의 방향제좋은, 객체 지향적 프로그래밍을 위한 방법론좋은 프로그래밍 코드는 변경이 용이하고, 유지보수와 확장이 쉬운 코드이다. 이러한 코드를 작성하기 위해서는 다음과 같은 방법론과 원칙을 따르는 것이 중요하다.중복의 최소화: 하나의 수정이 다른 하나의 수정을 동반해선 안된다.코드 변경의 용이성: 코드는 항상 완벽하지 않고 요구사항은 상시 바뀔 수 있다.재사용성: 정돈된 코드는 비슷하거나 다른 요구사항에도 그대로 사용 가능하다.클린 코드의 기준: 단일 목적과 오용, 남용 방지모든 변수, 함수, 클래스는 명확한 목적을 가지고, 오용되지 않도록 관리되어야 한다. 이를 위한 주요 원칙은 다음과 같다DRY (Dont' Repeat Yourself): 동일한 로직을 여러 곳에 중복하지 말고, 한 곳에서..
1000_sang
CHEONSANG-DEV