Back-End (Web) 42

[Spring] Layered Architecture

Layered Architecture📌 애플리케이션을 세 가지 주요 계층으로 나누어 구조화하는 방법으로 각 계층은 특정한 책임을 갖고 있으며, 계층 간에는 명확한 역할 분담이 이루어져 코드의 재사용성, 유지보수성, 확장성을 높이는 데 도움을 준다.  주요 특징계층 분리:시스템을 기능별로 분리하여 모듈화.책임 분리:각 계층은 고유한 책임과 역할을 가짐.상호 의존성:상위 계층은 하위 계층에만 의존하며, 계층 간의 의존성을 제한.유지보수 용이:특정 계층의 변경이 다른 계층에 최소한의 영향을 미침. Layerd Architecture 개요  기존의 MVC 패턴에서 Controller는 역할이 무수히 많다.요청에 대한 처리예외처리View Template 응답 or Data 응답비지니스 로직 처리DB 상호작용문제..

[Spring] Server에서 Client로 Data를 전달하는 방법

정적 리소스📌 웹 애플리케이션에서 변하지 않는 파일들을 의미한다. 예를 들어, HTML, CSS, JavaScript, 이미지 파일들(JPG, PNG, GIF) 등이 정적 리소스에 해당한다. 정적인 HTML, CSS, JS, Image 등을 변경 없이 그대로 반환한다.  정적 리소스의 특징고정된 내용:요청이 올 때마다 동일한 콘텐츠를 제공합니다.실행되거나 동적으로 변환되지 않습니다.캐싱 가능:정적 리소스는 자주 요청되므로 브라우저에서 캐싱하여 성능을 최적화할 수 있습니다.서버 부담 감소:서버는 정적 리소스를 변환하거나 처리하지 않으므로, 부하가 적습니다.브라우저에서 직접 렌더링:클라이언트(브라우저)가 직접 처리할 수 있는 파일 형식으로 제공됩니다.  Spring Boot에서 정적 리소스 제공Spring..

[Spring] HTTP Message Body & TEXT

JSON📌 데이터를 표현하기 위한 가볍고 간단한 텍스트 기반의 데이터 교환 형식입니다. 키-값 쌍으로 데이터를 구조화하며, 사람과 기계가 읽고 쓰기 쉽도록 설계되었습니다. 웹 애플리케이션과 서버 간의 데이터 교환에서 널리 사용됩니다. Json은 @RestController 에서 가장 많이 사용되는 데이터 형식이다. 현재 대부분의 API는 Request, Response 모두 JSON 형태로 통신한다.Json 형태로 Data를 전송할 때는 Request Header의 content-type이 꼭 application/json 이여야 한다. JSON의 특징가독성:간단한 문법으로 사람이 읽기 쉽습니다.경량성:XML에 비해 데이터 표현이 간결하여 네트워크 트래픽이 적습니다.언어 독립성:대부분의 프로그래밍 언어..

[Spring] @RequestParam & @ModelAttribute

쿼리 파라미터(Query Parameter)📌 HTTP 요청 URL의 일부로, Key-Value 형태로 데이터를 전달하는 방법 쿼리 파라미터는 URL 경로 끝에 **?**로 시작하며, 여러 개의 파라미터는 **&**로 구분됩니다.구조?=&= 특징클라이언트가 서버로 데이터를 전달할 때 사용.GET 요청에서 주로 사용되며, 요청 URL에 데이터를 포함.데이터가 URL에 노출되므로 민감한 정보를 보내는 데 적합하지 않음.여러 파라미터를 전달할 수 있음.  HTML 폼 데이터(Form Data)📌 HTML 폼(Form)을 통해 서버로 전달되는 Key-Value 형태의 데이터입니다. 폼 데이터는 주로 POST 요청의 HTTP 요청 본문(body)에 포함됩니다. 구조HTML 폼을 통해 데이터를 보낼 때, Key..

[Spring] Request Mapping

@RequestMapping📌클라이언트의 요청 URL과 이를 처리할 컨트롤러의 클래스나 메서드를 매핑하는 데 사용됩니다.특정 URL로 Request를 보내면 들어온 요청을 Controller 내부의 특정 Method와 Mapping 하기 위해 사용한다.Client로부터 요청이 왔을 때 어떤 Controller가 호출될지 Mapping하는것은 단순히 URL로 Mapping 하는것이 아니라 여러가지 요소(URL, Method 등)를 조합하여 Mapping한다. @RequestMapping과 Handler Adapter의 차이@RequestMappingHandler AdapterHTTP 요청과 컨트롤러 메서드를 연결하는 어노테이션DispatcherServlet과 핸들러(컨트롤러) 사이를 연결하는 구현체메타데..

[Spring] Spring Annotation

Lombok📌 Java의 보일러플레이트 코드(반복적이고 지루한 코드)를 줄여주는 라이브러리입니다.간단한 어노테이션으로 getter, setter, equals, hashCode, toString, logger 생성 등을 자동으로 생성하여 코드의 간결성을 높이고 가독성을 향상시킵니다.import lombok.ToString;@ToStringpublic class Example { private String name; private int age;}=@Overridepublic String toString() { return "Example(name=" + name + ", age=" + age + ")";} Lombok의 장점코드 간소화:getter, setter, equals, toSt..

[Spring] Spring MVC 패턴

Spring MVC 구조📌 Spring은 MVC 패턴에 프론트 컨트롤러 패턴, 어댑터 패턴이 적용된 구조를 가지고 있다.MVC는 소프트웨어 설계 패턴으로 구축 개념에 가깝다. 당연히 구축 방식은 때에 따라 달라왔고 이를 Spring에서는 통합하여 하나의 템플릿으로 제공한다. 요청이 오면 Controller에서 파라미터 정보 확인하여 비지니스 로직을 실행한다.비지니스 로직의 결과 Data 를 Model에 담아서 View에 전달해준다.View는 모델의 Data를 참조하여 화면을 그려준다.DispatcherServlet : Spring의 프론트(프론트엔드 아님, HTTP 요청의 최전선을 프론트라인이라 함) 컨트롤러View : 인터페이스로 구성되어 있다, 확장성을 가지고 있다. 실행순서Client로 부터 HT..

[JAVA] JAVA 웹 기술의 역사

📚 Java 웹 기술은 서블릿과 JSP로 시작해 MVC 패턴을 거쳐 MVC 프레임워크의 도입으로 구조화되었으며, 이후 어노테이션 기반의 Spring MVC와 비동기 처리에 최적화된 Spring WebFlux로 발전해왔다. Servlet의 등장 (1997)개요Java를 사용한 웹 개발의 시초로, 서버에서 동적으로 콘텐츠를 생성하기 위해 사용되었다. 클라이언트의 요청을 받고, 그에 대한 응답을 생성하는 기본적인 구조를 제공했다.단점코드의 복잡성이 증가하고 유지보수가 어려워졌다.JSP (JavaServer Pages) 도입 (1999)개요JSP는 HTML 내에 Java 코드를 삽입할 수 있는 기술로, 웹 페이지를 더 쉽게 동적으로 생성할 수 있도록 도와주었다.단점JSP 내에 비즈니스 로직을 분리할 수 없다...

Back-End (Web)/JAVA 2024.12.12

[Spring] Spring Boot

Spring Boot📌 Spring Framework를 기반으로 하여 간편하고 신속하게 애플리케이션을 개발할 수 있도록 도와주는 도구이다.   [1]  Spring Boot의 주요 특징특징설명자동 설정 (Auto Configuration)Spring Boot는 애플리케이션의 환경을 자동으로 감지하여 적절한 설정을 자동으로 적용합니다. 이를 통해 많은 설정을 수동으로 할 필요 없이, 개발자가 설정에 대해 걱정하지 않고 애플리케이션을 시작할 수 있습니다.독립 실행형 애플리케이션Spring Boot는 내장된 서버(예: Tomcat, Jetty, Undertow 등)를 포함하여, WAR 파일 없이도 실행할 수 있는 독립 실행형 애플리케이션을 만듭니다.스타터 프로젝트 (Starter Projects)Spring..

[Spring] Spring Framework

Spring Framework📌 Java Application Framework로 엔터프라이즈 애플리케이션 개발에 주로 사용된다. 엔터프라이즈 애플리케이션은 대규모로 복잡한 비즈니스 프로세스와 데이터를 처리하는 애플리케이션을 뜻한다.IoC (Inversion of Control), AOP (Aspect-Oriented Programming), DI (Dependency Injection) 등의 개념을 바탕으로 개발되었으며, 이를 통해 애플리케이션의 구조를 유연하고 모듈화하여 유지보수성을 높이고, 복잡한 엔터프라이즈 애플리케이션 개발을 더 간단하게 만들어 줍니다.[1]  Spring Framework 특징애플리케이션의 다양한 구성 요소를 유연하게 연결하고 관리할 수 있도록 해준다.Spring Framew..