본문 바로가기
반응형

전체 글517

톰캣 Tomcat웹 서버와 웹 컨테이너의 결합한 형태입니다. 현재 가장 일반적이고 많이 사용되는 WAS입니다. 컨테이너, 웹 컨테이너, 서블릿 컨테이너라고도 부릅니다. JSP와 서블릿 처리, 서블릿의 수명 주기 관리, 요청 URL을 서블릿 코드로 매핑, HTTP 요청 수신 및 응답, 필터 체인 관리 등을 처리해줍니다.서블릿서블릿은 자바를 이용해 웹 서비스를 만들기 위한 스펙입니다. 클라이언트가 프로그램으로 요청을 보내면 그 요청에 대한 결과를 응답해주기 위해서 사용됩니다. 서블릿은 다음과 같이 동작합니다.사용자가 URL을 입력하면 사용자의 요청이 서블릿 컨테이너로 전송됩니다.요청을 받은 컨테이너는 HttpServletRequest, HttpServletResponse를 생성합니다.서블릿 매핑 정보를 이용해 사.. 2025. 10. 24.
RequestBody VS ModelAttribute의 차이점 이들은 클라이언트 측에서 보낸 데이터를 Java 객체로 만들어주는데 RequestBody 는 요청의 본문(Body)에 있는 값을 바인딩할 때 사용하고, ModelAttribute 는 요청 파라미터나 multipart/form-data 형식을 바인딩할 때 사용합니다.RequestBody클라이언트가 보내는 요청의 본문을 자바 객체로 변환합니다.내부적으로 HttpMessageConverter를 거치는데, 이때 ObjectMapper를 통해 JSON 값을 java 객체로 역직렬화합니다.따라서 변환될 java 객체에 기본 생성자를 정의해야 하고, getter나 setter를 선언해야 합니다. 참고cf. record에 기본 생성자를 따로 정의하지 않았는데 역직렬화가 되는 이유record 는 기본생성자를 자동으로 제.. 2025. 10. 23.
@Controller 와 @RestController 의 차이점 이 두 어노테이션의 주요 차이점은 HTTP 응답의 처리 방식에 있습니다.@Controller주로 뷰(View) 를 반환하는 컨트롤러를 정의할 때 사용됩니다. 메서드가 반환하는 값은 뷰 리졸버(View Resolver)에 의해 해석되어 JSP, Thymeleaf 등과 같은 템플릿 엔진을 통해 HTML을 생성합니다.@RestController주로 RESTful 웹 서비스 API를 정의할 때 사용됩니다. 메서드가 반환하는 값은 자동으로 JSON 또는 XML 형식으로 변환되어 HTTP 응답 본문에 포함됩니다. 이는 @Controller와 @ResponseBody의 결합된 형태입니다. 2025. 10. 22.
Spring MVC의 실행 흐름 [View를 응답하는 경우] 이미지 출처 : www.egovframe.go.kr클라이언트로부터 HTTP 요청이 들어옵니다. 이때 DispatcherServlet이 프론트 컨트롤러의 역할을 수행합니다.HandlerMapping을 통해 URL에 매핑된 핸들러를 조회합니다.DispatcherServlet은 찾은 핸들러를 실행하기 위해 HandlerAdapter를 사용합니다.HandlerAdapter가 실제로 요청을 처리하는 메서드를 호출합니다.컨트롤러는 결과 데이터를 Model 객체에 담고, View 이름을 반환합니다.ViewResolver는 View 이름을 기반으로 적절한 뷰를 찾습니다.ViewResolver가 찾은 뷰를 사용해 최종적으로 HTML과 같은 응답을 생성합니다.[Message Converter의.. 2025. 10. 21.
Filter 와 Interceptor 의 차이점 FilterFilter는 요청 및 응답의 전처리와 후처리를 수행하고 서블릿 컨테이너에 의해 실행되는 Java 클래스입니다. 주로 요청 로깅, 인증, 인코딩 설정, CORS 처리, 캐싱, 압축 등의 공통 기능을 구현하는 데 사용됩니다.특징Filter는 서블릿 컨테이너(예: Tomcat) 수준에서 동작합니다. 모든 요청이 서블릿으로 전달되기 전에 Filter를 거칩니다.생명 주기: Filter는 doFilter 메서드를 통해 요청 및 응답을 처리합니다. FilterChain을 통해 다음 필터 또는 최종 서블릿으로 요청을 전달합니다.순서: web.xml이나 @WebFilter 애노테이션을 통해 설정할 수 있으며, 필터의 순서는 설정 파일에서 정의합니다.InterceptorInterceptor는 특정 핸들러 메.. 2025. 10. 20.
@ResponseBody(or ResponseEntity<T>)가 있을 때와 없을 때의 동작 방식의 차이점 @ResponseBody 혹은 ResponseEntity 반환을 사용한다면, 스프링은 컨트롤러에서 반환된 값을 HTTP 응답 본문에 직접 씁니다. 이때 자바 객체를 자동으로 JSON이나 XML 등의 타입으로 직렬화합니다. 만약, 없는 경우에는 스프링은 반환값을 뷰 이름으로 해석합니다. 뷰 이름으로 해석한 이후에, 뷰 리졸버를 사용해 뷰를 찾고 응답합니다.(뷰에 전달할 모델이 있다면, 이를 뷰에 전달하고 응답합니다.)@ResponseBody 와 ResponseEntity 반환 중 더 좋은 방식@ResponseBody를 사용하는 경우, 코드를 간결하게 유지할 수 있습니다. 하지만, 상태코드와 헤더를 유연하게 변경하기는 어렵습니다.반면, ResponseEntity 반환의 경우 상태코드와 헤더를 유연하게 변경할.. 2025. 10. 17.
[BOJ] 9095번 1, 2, 3 더하기 - 분석 및 Java 풀이 https://www.acmicpc.net/problem/9095백준 9095번: 1, 2, 3 더하기문제 번호문제 이름난이도 (Silver 3)분류90951, 2, 3 더하기⭐⭐⭐다이나믹 프로그래밍 (DP)문제 분석: 목표와 조건주어진 양의 정수 n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 문제입니다. 여기서 순서가 다른 합은 서로 다른 방법으로 간주합니다.입력: 테스트 케이스의 개수 T와 각 테스트 케이스에 대한 정수 n (1 n )출력: 각 n에 대해, 1, 2, 3의 합으로 나타내는 방법의 수.예시: n=44를 나타내는 방법은 총 7가지입니다.1+1+1+11+1+21+2+12+1+12+21+33+1문제 풀이의 핵심 분석: 점화식 찾기 (DP)이 문제는 작은 문제의 해답을 이용하여 큰 .. 2025. 10. 17.
@Value 어노테이션 사용 시 주의할 점 @Value은 설정 파일에 설정한 값을 주입할 수 있는 어노테이션입니다. 첫 번째로 주의해야 할 부분은 주입 시점입니다. @Value 어노테이션은 대상 컴포넌트가 스프링 빈으로 등록되고 의존 관계를 주입할 때 동작합니다. 따라서 환경 변수를 주입받는 대상 클래스에 @Component 어노테이션을 붙여주지 않는다면 해당 클래스는 컴포넌트 스캔이 대상이 되지 않아 스프링 빈으로 등록되지 않고, @Value 어노테이션 또한 동작하지 않습니다.또한 상황에 따라서 적절한 주입 방식을 선택해야 하는데요. 빈을 주입받을 때와 마찬가지로 @Value 어노테이션을 사용할 때도 필드 주입, 생성자 주입, setter 주입 등의 방식을 사용할 수 있습니다. 따라서 이들의 장단점을 비교하고, 상황에 따라 적절한 주입 방식을 .. 2025. 10. 16.
RAID(Redundant Array of Independent Disks) RAID는 수 많은 데이터들을 안전하게 저장하거나 성능을 높이기 위해 여러 하드 디스크나 SSD를 마치 하나의 장치처럼 사용하는 기술입니다.구성 방식RAID-0 은 여러 보조기억장치에 데이터를 나누어 저장하는 구성 방식입니다. 데이터를 저장할 때 하드 디스크는 각 장치에 번갈아 데이터를 저장합니다. 이때 줄무늬처럼 분산되어 저장된 데이터를 스트라이프라고 하며 분산하여 저장하는 방식을 스트라이핑이라고도 합니다.데이터를 분산하여 저장하기 때문에 저장된 데이터를 읽고 쓰는 속도가 빨라집니다. 하나의 대용량 저장 장치를 사용하면 여러 번에 걸쳐 읽고 써야하는 데이터를 동시에 읽고 쓸 수 있기 때문입니다. 가령, 4TB 저장 장치 한개 읽기 속도보다 RAID 0 구성으로된 1TB 장치 네 개 읽기 속도가 더욱 빠.. 2025. 10. 15.
728x90
반응형