[Servlet/JSP] 상태 저장 공간 정리: Request, Session, Cookie, Application
·
Back end
✅ 상태 저장이란?웹 애플리케이션은 기본적으로 HTTP 프로토콜을 사용합니다. 하지만 HTTP는 Stateless(무상태) 하기 때문에, 요청 간에 정보를 유지하려면 상태 저장이 필요합니다. Servlet/JSP 환경에서는 다음과 같은 4가지 주요 저장소를 통해 상태를 관리합니다. 🗂️ 1. Request유효 범위: 한 번의 요청-응답 주기 동안설명: 한 페이지에서 다른 페이지로 포워딩할 때 데이터를 전달할 수 있습니다.사용 예시: 로그인 실패 메시지 전달 request.setAttribute("message", "로그인 실패");RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp");dispatcher.forward(reque..
[에러] vcruntime140_1.dll 오류 해결
·
Back end/에러로그
1. 오류 발생office 앱 실행 시 아래와 같은 오류가 발생하였습니다."vcruntime140_1.dll이(가) 없어 코드 실행을 진행할 수 없습니다." 2. 설치 파일 다운로드2.1. 장치 사양 확인파일 탐색기에서 [내 PC 우클릭 >  속성] 을 클릭한 후 장치 사양을 확인합니다. 2.2. 설치 파일 다운로드아래 사이트에 접속하여 버전에 맞는 설치파일을 다운로드합니다. https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170  Latest supported Visual C++ Redistributable downloadsThis article lists the download links for the..
[Spring Project] 스프링 부트 정적 컨텐츠와 Welcome Page 동작 원리
·
Back end/Spring Project
1. 스프링 부트의 정적 컨텐츠 기능스프링 부트는 src/main/resources/static/ 디렉터리에 위치한 정적 HTML, CSS, JavaScript, 이미지 등의 파일을 자동으로 제공하는 기능을 갖추고 있습니다. 이를 통해 별도의 설정 없이도 정적 웹 페이지를 쉽게 배포할 수 있습니다. 예를 들어, static/index.html 파일을 추가하면 애플리케이션 실행 시 기본 Welcome Page로 동작합니다. index.htmlHellohello위와 같이 index.html을 static 폴더에 두면, 사용자가 http://localhost:8080/로 접근할 때 자동으로 해당 파일이 응답됩니다. 2. 정적 컨텐츠와 컨트롤러의 우선순위스프링 부트는 요청이 들어왔을 때 다음과 같은 우선순위로 ..
[CS] MVC와 MVVM 모델
·
Back end
소프트웨어 개발에서 아키텍처 패턴은 코드의 유지보수성과 확장성을 높이기 위해 사용됩니다. 그중 MVC와 MVVM 모델은 가장 널리 사용되는 두 가지 패턴으로, 각각의 구조와 장단점이 있습니다.1. MVC (Model-View-Controller)구조Model :데이터와 비즈니스 로직을 관리합니다. 데이터베이스와의 상호작용, 상태 관리 등이 포함됩니다.View :사용자 인터페이스(UI)를 담당합니다. 데이터를 화면에 출력하고 사용자 입력을 처리합니다.Controller :View와 Model 간의 중개 역할을 합니다. 사용자의 요청을 받아 Model을 통해 데이터를 처리하고, 결과를 View에 전달합니다.작동 방식사용자가 View를 통해 입력합니다.View가 Controller에 요청을 전달합니다.Cont..
[Java] List<Map<String, String>> 형식을 String[] 형식으로 변경하는 방법
·
Back end/Java
Java에서 List> 형식을 String[] 형식으로 변경하는 방법에는 Stream API를 사용하는 방법과 전통적인 for 루프를 사용하는 방법이 있습니다.Stream API를 사용하는 방법Stream API는 Java 8부터 도입된 기능으로, 컬렉션을 처리하는 데 있어 간결하고 선언적인 코딩 스타일을 제공합니다.@Controllerpublic class SampleController{ @Autowired private SampleService sampleService ; public void printHeaderTextArray() { // 서비스에서 데이터 가져오기 List> headerList = sampleService.getHeaderL..
[API] API와 RestAPI
·
Back end/API
API식당을 예로 손님은 Client, 점원은 API, 주방장은 Server로 생각할 수 있습니다. 손님이 점원에게 음식을 주문하고, 점원이 그 주문을 주방장에게 전달하며, 주방장이 음식을 준비한 다음, 점원이 그 음식을 다시 손님에게 전달하는 과정을 보여줍니다.손님 (Client): 서비스를 이용하려는 사용자점원 (API): 사용자의 요청을 받아서 내부 시스템(서버)으로 전달하고, 그 결과를 사용자에게 반환하는 역할주방장 (Server): 요청을 처리하고 결과를 반환하는 내부 시스템+------------------+ +------------------+ +------------------+| 손님 | ---주문서---> ..
[Java] JUnit과 AssertJ를 활용한 효과적인 단위 테스트 작성 방법
·
Back end/Java
JUnit의 기본 개념과 Given-When-Then 패턴, JUnit 테스트 생명주기, 그리고 AssertJ를 활용하여 테스트 코드의 가독성을 높이는 방법에 대해 설명하겠습니다.JUnitJUnit은 자바 기반의 단위 테스트를 위한 강력한 프레임워크입니다. 단위 테스트는 개별 구성 요소나 함수가 의도한 대로 동작하는지 확인하는 과정으로, JUnit은 이러한 테스트를 간편하고 효율적으로 작성할 수 있게 해줍니다. Given-When-Then 테스트 방식JUnit에서 자주 사용되는 테스트 방식 중 하나는 Given-When-Then 패턴입니다. 이 패턴은 테스트를 보다 명확하고 읽기 쉽게 만들어줍니다. 각 단계는 다음과 같습니다.Given: 테스트의 초기 상태를 설정합니다. 필요한 객체를 생성하거나 초기화하..
[Java] 자바 레코드(Record)란? (예제 포함)
·
Back end/Java
레코드(Record)란?Java 14에서 처음 소개되었고, Java 16에서 정식 기능으로 추가되었습니다.데이터 전달 객체(Data Transfer Object, DTO)를 더욱 간편하게 만들기 위한 기능을 제공합니다.파라미터에 정의한 필드는 private final로 정의됩니다.private → 클래스 외부에서 직접 접근 불가. → 게터(getter)를 자동으로 생성함.final → 초기화된 이후 값이 변경되지 않음(불변성) → 상속할 수 없음.게터(getter)를 자동으로 만들기 때문에 따로 정의하지 않아도 됩니다.생성자, 게터, equals(), hashCode(), toString() 메서드를 자동으로 생성함.'get' 접두사 없이 필드명과 동일하게 자동 생성됨.예제 코드record Person(..