전체 글

요청을 받아, 그에 대한 처리 뒤, 응답을 반환한다.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): 동일한 로직을 여러 곳에 중복하지 말고, 한 곳에서..
분류된 객체의 모음Java EnumEnum은 한정된 값들의 집합을 정의할 때 사용되는 Java의 특별한 데이터 타입이다. 특정 메서드의 파라미터나 값을 설정할 때 케이스가 너무 많아져 복잡해지는 것을 방지하기 위해 사용된다. Enum을 통해 정의된 값만을 사용하도록 제약할 수 있다. 많은 경우, 메서드 파라미터에 Integer나 String과 같은 값들이 사용된다. 하지만 값이 잘못된 경우를 방지하기 위해 Enum을 사용하면, 값의 경우의 수를 제한할 수 있다. 이는 잘못된 값의 전달을 방지한다. Enum 사용 예시문제 상황:public static String createMessage(String message) { return "당신에게 메세지를 보냅니다. : " + message;}위 코드에서 me..
추상화 다형성Java에서 인터페이스와 추상 클래스는 객체지향 프로그래밍의 중요한 요소인 추상화와 다형성을 구현하는 데에 사용한다. 이 두 개념은 클래스가 가져야 할 행위나 속성을 정의하는 방법을 제공하며, 특정 상황에서 어떤 것을 사용하는 것이 더 적합한지에 따라 선택하게 된다.추상화(Abstraction)추상화는 구체적인 구현을 숨기고, 필요한 부분만을 외부에 제공하는 것을 의미한다.이는 복잡한 시스템의 세부 사항을 감추고, 필요한 기능만을 제공하는 프로그래밍 기법이다. 자바에서는 인터페이스 혹은 추상 클래스를 통해 이뤄낼 수 있다.Interface(추상화) 혹은 Abstract Class(추상 클래스) → (구현, 구체화) 클래스 = 데이터 + 행위Abstract: What 무엇을 저장? / 무엇을 ..
1000_sang
CHEONSANG-DEV