URI URI(Uniform Resource Identifier)은 이름 그대로 리소스 식별자를 말한다. 여기서 리소스란 웹상에 존재하는 이름(식별자)을 가진 모든 정보를 말한다. 서울의 일기 예보, 청량리역의 사진, 서울 인구 통계 데이터 등이 모두 리소스이다. 그리고 리소스의 이름은 URI로 표현한다. 따라서 URI로 식별할 수 있는 모든 것이 리소스가 되며 URI로 리소스를 식별하고 접근할 수 있다. URI의 종류에는 URL과 URN이 있다. URL : 리소스의 위치로 리소스를 식별 URN : 리소스에 이름을 부여, 리소스의 이름으로 식별 리소스의 위치(URL)은 변할 수 있지만 이름(URN)은 변하지 않는다. URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않았기에 보통 URI라..
Disjoint Set 분리 집합 또는 서로소 집합은 각각의 집합이 공통 원소를 가지고 있지 않은 집합이다. 즉 전체집합 U에 대해, U의 분리 집합 A ,B는 다음 조건을 만족한다. A, B는 U의 부분 집합이다. A, B는 공통 원소를 가지지 않는다. (A ∩ B = Ø) A, B의 합집합은 전체 집합 U이다. (A ∪ B = U) 위 조건은 분리 집합이 개수가 3개 이상일때도 만족한다. Union-Find Union-Find는 분리 집합을 구현하고 조작하는 자료구조이다. 분리 집합을 합치는 연산인 union 연산과 임의의 원소가 어떤 집합에 속하는지 찾는 find 연산을 제공한다해서 union-find 자료구조라 불린다. Union-Find를 구현하기 위해선 아래 3가지 연산을 구현해야한다. 초기화..
@RequestMapping @RequestMapping 애노테이션은 요청 url을 특정 컨트롤러로 맵핑한다. 기본 매핑 package hello.springmvc.basic; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController public class TestController { /** * 기본 요청 * 둘 다 허용한다 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, POST, HEAD, P..
프론트 컨트롤러스프링 MVC의 Dispatcher Servlet은 프론트 컨트롤러(Front Controller) 패턴으로 구현되어 있다. 기존의 MVC 패턴을 사용하면 공통 코드가 여러 컨트롤러에 산재되는데 프론트 컨트롤러 패턴을 적용하면 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출함으로써 공통 코드를 한군데 모을 수 있다. DispatcherServlet스프링 MVC의 기본 서블릿이다. HttpServlet을 상속 받고 있다.DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet스프링 MVC를 사용하려면 DispatcherServlet을 등록해야한다. 스프링 부트 구동시 DispatcherServlet을 자동 등록하며 모든 ..
간단한 회원관리 웹 애플리케이션을 만들어보면서 MVC 패턴이 왜 도입됬는지 알아보자. 회원 정보를 저장하고 조회하는 기능을 구현한다. 프로젝트 구성은 아래의 글의 구성과 같다. https://gunjoon.tistory.com/136 Spring Boot에서 Servlet 사용하기 프로젝트 구성 IDE : Intellj JDK 1.8 Maven Project (groupId = hello, artifactId = servlet, packaging = jar) Spring Boot 2.4.x Dependency (Spring Web, Lombok) HelloServlet 전통적인 스프링 웹 애플리케이션은 web.xml에 서블릿을 등록 gunjoon.tistory.com Member - 회원 도메인 객체 p..
프로젝트 구성 IDE : Intellj JDK 1.8 Maven Project (groupId = hello, artifactId = servlet, packaging = jar) Spring Boot 2.4.x Dependency (Spring Web, Lombok) HelloServlet 전통적인 스프링 웹 애플리케이션은 web.xml에 서블릿을 등록했다. 하지만 톰캣 7(서블릿 3.0)부터 자바 애노테이션으로 서블릿을 등록할 수 있다. (톰캣이 @WebServlet이 적용된 클래스를 검색해 서블릿으로 등록한다.) 1. @ServletComponentScan 추가 프로젝트의 ServletApplicaion 클래스에 @ServletComponentScan 애노테이션을 추가한다. SpringBoot에서 ..
서블릿 등장 배경 웹 클라이언트와 웹서버(또는 WAS)는 HTTP로 통신한다. 요청 메세지로부터 응답 메세지를 만들려면 웹서버는 다음의 처리 과정을 거쳐야 한다. 처리 과정이 복잡하기에 프로그래머는 비즈니스 로직에만 집중할 수 있도록 만들어줄 필요가 있다. 이를 위해 서블릿이 등장했다. 프로그래머는 서블릿 클래스만을 작성해 비즈니스 로직에 집중하고 서블릿을 지원하는 WAS(ex 톰캣)가 위 작업을 대신한다. 서블릿 서블릿이란 클라이언트 요청을 처리하고 그 결과를 반환하는 Servlet 클래스의 규현 규칙을 지킨 자바 웹 프로그래밍 기술이다. /hello 경로로 요청 WAS는 요청을 받으면 HTTP 요청 메시지를 기반으로 Request 객체와 HTTP 응답을 위한 Response 객체 생성 서블릿 컨테이너..