전체 글 517

스택을 활용하여 브라우저의 뒤로가기/앞으로가기 기능을 구현하는 방법을 설명해주세요.

스택을 활용하면 브라우저의 뒤로가기/앞으로가기 기능을 효율적으로 구현할 수 있습니다. 이를 위해 다음과 같은 두 가지 스택이 필요합니다.backStack (뒤로가기 스택): 사용자가 방문한 페이지들이 차례대로 쌓이며, 가장 위에 있는(top) 페이지가 현재 페이지에 해당합니다. 이 스택은 뒤로가기 기능을 담당합니다.forwardStack (앞으로가기 스택): 뒤로가기를 한 뒤 다시 앞으로 이동할 수 있도록 이전에 방문했던 페이지들을 보관합니다.이 두 스택을 활용한 동작 흐름은 다음과 같습니다.1. 새로운 페이지 방문 시현재 페이지를 backStack에 push합니다.이전의 forward 경로는 더 이상 유효하지 않으므로 forwardStack은 초기화됩니다.2. 뒤로가기 버튼 클릭 시현재 페이지를 bac..

ControllerAdvice에 대해 설명해주세요

@ControllerAdvice는 모든 컨트롤러에 대해 전역 기능을 제공하는 애너테이션입니다. @ControllerAdvice가 선언된 클래스에 @ExceptionHandler, @InitBinder, @ModelAttribute를 등록하면 예외 처리, 바인딩 등을 한 곳에서 처리할 수 있어, 코드의 중복을 줄이고 유지보수성을 높일 수 있습니다. @ControllerAdvice는 내부에 @Component가 포함되어 있어 컴포넌트 스캔 과정에서 빈으로 등록됩니다. @RestControllerAdvice는 내부에 @ResponseBody를 포함하여 @ExceptionHandler와 함께 사용될 때 예외 응답을 Json 형태로 내려준다는 특징이 있습니다.

쿠키와 세션에 대해 설명해주세요.

쿠키와 세션은 클라이언트와 서버 간의 상태를 유지하기 위해 사용하는 대표적인 방식들입니다. 웹은 기본적으로 상태를 저장하지 않는 Stateless한 구조이기 때문에, 사용자의 로그인 정보나 장바구니와 같은 클라이언트 정보를 유지하려면 별도의 상태 관리 방식이 필요합니다. 이때 주로 활용되는 방식이 쿠키와 세션입니다.먼저, 쿠키는 클라이언트 측에 저장되는 데이터입니다. 서버가 클라이언트에게 응답할 때 Set-Cookie 헤더를 통해 데이터를 전달하고, 이후 클라이언트는 요청 시 해당 쿠키를 자동으로 포함하여 서버로 전송하게 됩니다. 쿠키는 브라우저에 저장되기 때문에 서버에서는 별도의 저장 공간을 차지하지 않으며, 지속적인 상태 유지가 가능합니다. 유효 기간을 설정하여 자동 만료되도록 할 수도 있습니다. 쿠..

@Controller 와 @RestController 의 차이점을 설명해주세요.

이 두 어노테이션의 주요 차이점은 HTTP 응답의 처리 방식에 있습니다.@Controller주로 뷰(View)를 반환하는 컨트롤러를 정의할 때 사용됩니다. 메서드가 반환하는 값은 뷰 리졸버(View Resolver)에 의해 해석되어 JSP, Thymeleaf 등과 같은 템플릿 엔진을 통해 HTML을 생성합니다.@RestController주로 RESTful 웹 서비스 API를 정의할 때 사용됩니다. 메서드가 반환하는 값은 자동으로 JSON 또는 XML 형식으로 변환되어 HTTP 응답 본문에 포함됩니다. 이는 @Controller와 @ResponseBody의 결합된 형태입니다.

Spring MVC의 실행 흐름에 대해 설명해주세요.

클라이언트로부터 HTTP 요청이 들어옵니다. 이때 DispatcherServlet이 프론트 컨트롤러의 역할을 수행합니다.HandlerMapping을 통해 URL에 매핑된 핸들러를 조회합니다.DispatcherServlet은 찾은 핸들러를 실행하기 위해 HandlerAdapter를 사용합니다.HandlerAdapter가 실제로 요청을 처리하는 메서드를 호출합니다.컨트롤러는 결과 데이터를 Model 객체에 담고, View 이름을 반환합니다.ViewResolver는 View 이름을 기반으로 적절한 뷰를 찾습니다.ViewResolver가 찾은 뷰를 사용해 최종적으로 HTML과 같은 응답을 생성합니다.[Message Converter의 동작]JSON과 문자열 등을 응답하는 경우는 View를 응답하는 경우와 유사한..

예상치 못하게 외부 라이브러리의 버그로 인해 기능에 문제가 생겼다면, 어떤 절차로 해결하실 건가요?

외부 라이브러리가 간혹 예상치 못한 버그나 비정상적인 동작으로 인해 전체 기능에 영향을 주는 경우가 있습니다. 이럴 때 단순히 라이브러리를 비난하기보다는, 문제의 원인을 명확하게 파악하고, 영향도를 분석한 뒤, 가능한 범위 내에서 안정적인 대응 전략을 택하는 것이 중요합니다.먼저 가장 우선적으로 해야 할 일은 문제가 발생한 원인을 확실히 좁히는 작업입니다. 예를 들어, 최근에 라이브러리 버전이 변경되었는지 확인하거나, 특정 컴포넌트에서만 문제가 발생하는지 등을 확인해 문제 범위를 좁힙니다. 이 과정에서 Git 히스토리나 GitHub 이슈를 참고하면 도움이 됩니다. 이를 통해 실제로 버그가 해당 라이브러리에서 기인한 것인지, 아니면 잘못된 사용 방식 때문인지를 명확하게 구분합니다.다음으로는 해당 문제가 사..

다음 리액트 코드의 실행 순서에 대해 설명해주세요.

아래의 코드에서 최초 마운트 및 버튼 클릭 시, console.log가 어떤 순서로 출력되는지 설명해주세요. 🙂import { useState, useEffect } from 'react';function Parent() { const [count, setCount] = useState(0); console.log('1'); useEffect(() => { console.log('2'); return () => { console.log('3'); }; }, [count]); return ( 카운트: {count} setCount((prev) => prev + 1)}>+1 );}function Child({ value }) ..

Filter와 Interceptor의 차이점을 말해주세요.

FilterFilter는 요청 및 응답의 전처리와 후처리를 수행하고 서블릿 컨테이너에 의해 실행되는 Java 클래스입니다. 주로 요청 로깅, 인증, 인코딩 설정, CORS 처리, 캐싱, 압축 등의 공통 기능을 구현하는 데 사용됩니다.특징Filter는 서블릿 컨테이너(예: Tomcat) 수준에서 동작합니다. 모든 요청이 서블릿으로 전달되기 전에 Filter를 거칩니다.생명 주기: Filter는 doFilter 메서드를 통해 요청 및 응답을 처리합니다. FilterChain을 통해 다음 필터 또는 최종 서블릿으로 요청을 전달합니다.순서: web.xml이나 @WebFilter 애노테이션을 통해 설정할 수 있으며, 필터의 순서는 설정 파일에서 정의합니다.InterceptorInterceptor는 특정 핸들러 메..

전자정부 프레임워크 현황 고찰

[1] v3.8 (2018년 출시)기능 확장 및 안정화를 목표로 개발된 버전.플러그인 추가 및 사용자 맞춤형 환경 제공.자바 버전:Java 8까지만 기본 지원됩니다.코드와 API의 호환성이 Java 8에 최적화되어 있습니다.스프링 프레임워크:Spring Framework 4.x 버전을 사용합니다.전통적인 웹 애플리케이션 개발 환경에 적합하며, 리액티브 프로그래밍이나 최신 기술과는 다소 거리감이 있습니다.[2] v4.1 (2022년 이후 출시):최신 기술 반영 및 오픈소스 소프트웨어 적용 확대.스프링 프레임워크 4.1을 중심으로 한 구조적 개선.자바 버전:Java 11 이상으로 확장되었습니다.Java 11과 Java 17 호환성을 강조하여 현대적 애플리케이션 개발에 유리합니다.스프링 프레임워크:Spring..

소스트리 기본사용

https://www.sourcetreeapp.com/ Sourcetree | Free Git GUI for Mac and WindowsA Git GUI that offers a visual representation of your repositories. Sourcetree is a free Git client for Windows and Mac.www.sourcetreeapp.com 소스관리하고 git 을 직관적으로 보기 좋습니다. 설치하고 도구탭에서 => 옵션탭을 선택한후 인증탭에서 계정을 추가하고 소스가 연동됩니다. 원격에도 연결되고 터미널로 git 명령어를 내릴수도 있습니다. 이클립스에서 같은 경우 cli로 하고 싶으면 소스트리를 쓰면 됩니다.탐색기 연결 기능도 지우너하네요 기본적으로 git..