-
[BE] REST API와 상태 코드
스프링 부트로 API 서버를 만들기 시작하면서 REST API를 배웠다.실습은 팝업 스토어 웨이팅 서버를 단계별로 고쳐 가는 방식이었다.1. REST란REST(Representational State Transfer)는 로이 필딩(Roy T. Fielding)이 HTTP를 개선하는 작업에 참여하면서 정리한 네트워크 아키텍처 스타일이다. 기존 웹을 망가뜨리지 않으면서, 시스템이 독립적으로 확장되고 오랫동안 바뀌어 갈 수 있게 하자는 게 핵심이다.그 전에는 XML 기반의 SOAP처럼 무겁고 상태를 유지하는 방식들이 많았다.2. REST의 제약 조건제약 조건뜻클라이언트-서버화면(UI)은 클라이언트, 데이터와 비즈니스 로직은 서버. 서로 따로 개발하고 배포할 수 있다무상태(Stateless)요청마다 필요한 정보..
2026.10.18
-
[Spring] Spring MVC와 DispatcherServlet
서블릿으로 로그인 실습을 할 때 URL마다 서블릿을 하나씩 만들었다. LoginServlet, MainServlet, MyPageServlet, LogoutServlet. 그리고 로그인이 필요한 서블릿마다 세션 확인 코드를 반복해서 넣었다.기능이 수십 개, 수백 개가 되면 이 방식은 힘들어진다. Spring MVC는 이걸 서블릿 하나가 모든 요청을 먼저 받는 구조로 바꾼다. 이 글은 교안 내용을 중심으로 정리했다.1. Spring MVCServlet API를 기반으로 만든 스프링의 웹 개발 모듈이다. 모듈 이름이 spring-webmvc라서 Spring Web MVC라고도 하는데 보통은 그냥 Spring MVC라고 부른다."서블릿 기반"이라는 게 핵심이다. 스프링이 서블릿을 없앤 게 아니라, 서블릿 위에..
2026.10.18
-
[Spring Boot] 스프링 부트는 왜 필요한가
스프링이 부가 기능을 대신 처리해 줘서 비즈니스 로직에 집중할 수 있게 됐다고 했는데, 막상 스프링으로 웹 애플리케이션을 띄우려면 신경 쓸 게 여전히 많았다. 스프링 부트는 그 남은 부분을 정리해 주는 스프링의 하위 프로젝트다.공식 소개 문장은 이거다. "Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can just run." 그냥 실행만 하면 되는 스프링 애플리케이션을 쉽게 만들게 해 준다는 뜻이다.1. 부트 이전에 신경 써야 했던 것서블릿과 서버 배포용 web.xml의 동작 방식.war 폴더 구조와 톰캣에 배포하는 과정포트 번호, DataSource 같은 DB 연결 설..
2026.10.18
-
[Spring] 빈 스코프와 싱글톤 빈의 상태
스프링 빈은 기본적으로 컨테이너에 하나만 만들어진다. 서블릿이 하나뿐인데 요청마다 스레드가 붙는 것과 같은 구조라서, 똑같은 함정이 있다. 교안 키오스크 실습 step-05가 이걸 다룬다.1. 무슨 일이 있었나 (교안 키오스크 실습)손님이 메뉴를 하나씩 담고 다 담으면 결제하도록 장바구니 기능을 만들었다. 장바구니는 주문 업무와 같이 다니니까 KioskService의 필드에 뒀다.@Servicepublic class KioskService { private final List cart = new ArrayList(); // ⚠ 손님 장바구니를 빈의 필드에 public void addToCart(Menu menu, int quantity) { cart.add(new OrderLine(menu, ..
2026.10.18
-
[BE] SSR vs CSR, 그리고 API 서버
스프링 부트 첫 시간에 만든 건 API 서버였다. 지금까지 서블릿으로 만든 서버랑 뭐가 다른지 정리하려면 먼저 서버가 응답하는 방식부터 나눠 봐야 했다.1. 서버가 응답하는 것 두 가지.html, .css, .js 같은 화면 파일화면 없이 데이터만 (주로 JSON)엄밀히 말하면 둘 다 서버가 가진 리소스지만, "화면을 누가 완성하느냐"가 다르다. 여기서 SSR과 CSR이 갈린다.2. SSR (Server Side Rendering)서버에서 HTML을 완성해서 응답하는 방식이다. DB에서 데이터를 꺼내고, 그 데이터를 HTML에 끼워 넣은 완성본을 브라우저에 보낸다. 브라우저는 받은 걸 그대로 보여 주면 된다.별도의 프론트 기술 없이 서버가 화면까지 다 만드는 전통적인 구조예: Servlet/JSP, Sp..
2026.10.18
-
캐싱(Caching)
캐싱(Caching)은 자주 사용하는 데이터나 계산 결과를속도가 빠른 임시 저장소(캐시, Cache)에 따로 보관해 두었다가, 필요할 때 빠르게 재사용하는 기술이다.매번 먼 곳(원래 서버, 데이터베이스, 하드디스크)까지 가서 똑같은 데이터를 새로 가져오는 대신,가까운 곳에 복사본을 두고 즉시 꺼내 쓰는 원리이다.쉽게 이해하는 비유: 책상과 도서관원본 데이터 (DB/서버): 멀리 있는 도서관 서가 깊숙이 보관된 책캐시 메모리 (Cache): 내 책상 위에 올려둔 메모장캐싱 과정: 도서관까지 가서 책을 새로 찾아오는 게 오래 걸리니까, 자주 읽는 단원이나 내용은 책상 위 메모장에 요약해 두고 필요할 때마다 책상 위를 바로 확인하는 것!캐싱을 사용하는 핵심 이유응답 속도 향상: 멀리 있는 서버나 느린 데이터베..
2026.09.07
-
[JS] 자주 쓰이는 DOM 요소 속성
DOM(Document Object Model) 요소 속성(Property)= DOM 조작 속성저런 속성들은 자바스크립트로 HTML 요소를 조작할 때 사용한다.자주 쓰이는 주요 DOM 조작 속성들 🎨 자주 쓰이는 주요 DOM 조작 속성들은 아래와 같다.React, Vue, Angular 등의 프레임워크나 jQuery 등 라이브러리의 도움을 전혀 받지 않고 쓰는'순수한 자바스크립트 그 자체'에 해당하는 바닐라 스크립트의 문법이다.* jQuery는 과거에 많이 쓰던 라이브러리이다. 1. 내용 및 글자 조작element.textContent 태그 안의 순수 텍스트를 읽거나 변경 (보안상 안전하고 빠름)element.innerHTML태그 안의 HTML 구조 자체를 변경 (예: element.innerHTML ..
2026.09.04
-
[C언어] 파일 입출력 - 읽기 (fopen, fgets, fseek, feof, fclose)
1) fopen(경로, mode);FILE * 형의 값을 반환 2) fgets(buffer, length, file);fgets 함수는 줄바꿈(\n)이 있다면 줄바꿈까지만 읽어온다. 따라서 fgets함수가 호출되었을 때는 첫 번째 line까지만 읽어온다. 3) fseek(파일, 이동할 거리, 이동을 시작할 위치);file을 읽어들일 때에는 file pointer라는 것이 있다. 참고 자료1) https://jeckl.tistory.com/entry/C%EC%96%B8%EC%96%B4-21%EA%B0%95-%ED%8C%8C%EC%9D%BC-%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%9D%BD%EA%B8%B0-fopen-fgets-fseek-feof-fclose ([C언어] ..
2025.03.29
-
[FE][08] HTML 핵심 요소, 주석, 전역 속성
블록(상자) 요소특별한 의미가 없는 구분을 위한 요소. (Division)제목을 의미하는 요소 (Heading)
2024.07.13
-
[FE][07] HTML 글자, 상자
HTML 글자, 상자 요소가 화면에 출력되는 특성을 크게 2가지로 구분한다. 1) 인라인(Inline) 요소 글자를 만들기 위한 요소들대표적인 인라인 요소 본질적으로 아무것도 나타내지 않는콘텐츠 영역을 설정하는 용도2) 블록(Block) 요소상자(레이아웃)을 만들기 위한 요소들 "레이아웃을 설정한다."
2024.07.09