Spring(89)
-
[Spring] 요청 메시지에서 데이터를 전달하는 방법
무조건 세 가지 방법만 사용한다. 1. 쿼리 파라미터 활용하기 get 메소드에서 활용하는 방식으로 쿼리 파라미터에 넣어 전달한다. 메시지 바디는 없다. 검색, 필터링, 페이징에서 활용한다. 2. HTML form 이용하기 html form에 넣어 전달한다. content-type: x-www-form-urlencoded라는 헤더가 붙는다. 그러면 웹브라우저가 쿼리 파라미터 형식으로 작성된 내용을 메시지 바디에 넣어 전달한다. 회원가입, 상품 주문 등에 사용한다. 3. 메시지 바디에 넣어 전달하기 데이터를 메시지 바디에 직접 넣어 전달한다. Json을 많이 사용한다. post, put, patch 메소드를 활용한다. API에 활용한다. Reference https://www.inflearn.com/cour..
2023.11.11 -
[Spring] 요청 시작 라인, 헤더, 기타 정보 출력하기
start-line private static void printStartLine(HttpServletRequest request) { System.out.println("--- REQUEST-LINE - start ---"); System.out.println("request.getMethod() = " + request.getMethod()); //GET System.out.println("request.getProtocol() = " + request.getProtocol()); //HTTP/1.1 System.out.println("request.getScheme() = " + request.getScheme()); //http // http://localhost:8080/request-heade..
2023.11.11 -
[Spring] HttpServletRequest에 대한 나름의 이해
서블릿이 요청 메시지를 파싱해서 HttpServletRequest에 담아서 제공한다. 이외에도 추가기능을 제공한다. 임시 저장소 기능이라고 HTTP의 요청의 시작과 끝까지 유지되는 임시 저장소 기능으로 request.setAttribute, request.getAttribute로 사용한다. 세션 관리 기능도 있다. 가장 중요한 건 HTTP 요청 파싱과 응답 메시지 작성을 도와주는 역할이기 때문에 HTTP 요청 메시지와 응답 메시지에 대한 이해가 바탕이 되어야 제대로 쓸 수 있다. Reference https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1&unitId=71168 학습 페이지 www.inflearn..
2023.11.10 -
[Spring] 자바 백엔드 웹 기술 역사에 대한 나름의 이해
servlet: HTML 생성이 어렵다 jsp: HTML 생성은 쉽지만 비즈니스 로직까지 너무 많은 역할을 한다. 서블릿, JSP 조합 MVC 패턴 사용 춘추 전국 시대 애노테이션 기반의 스프링 MVC가 통일 스프링 부트의 등장 서버를 내장. 빌드 결과에 WAS 서버 포함. 빌드 배포 단순화 Web servlet 기반 Spring MVC Web Reactive 기반 Spring WebFlux 웹 플럭스는 비동기 넌블록킹 처리로 최소 쓰레드로 최대 성능. 쓰레드 컨텍스트 스위칭 비용 효율화. 함수형 스타일로 개발. 서블릿 기술 사용X 하지만 난이도가 높고 RDB 지원이 부족. 일반 MVC 쓰레드 모델도 충분히 빠름. 실무에서 거의 사용 안함 자바 뷰 템플릿 역사 jsp: 속도 느림, 기능 부족 프리마커, ..
2023.11.10 -
[Spring] HTML, HTTP API, CSR, SSR에 대한 나름의 이해
백엔드 개발자는 HTTP와 관련해서 크게 세가지를 제공한다. 1. 정적 리소스 2. HTML 페이지: 타임리프나 jsp로 동적으로 HTML을 생성한다. 3. HTTP API: 서버나 서버간, 웹클라이언트, 앱클라이언트에 데이터를 제공하기 위해 사용한다. JSON 형식으로 사용한다. 웹클라이언트는 React, Vue.js 앱클라이언트는 Android, Ios, PC 앱과 같은 것이다. SSR은 서버 사이드 렌더링이다. CSR은 클라이언트 사이드 렌더링이다. SSR은 서버에서 HTML을 만들어서 클라이언트에게 제공하는 것을 의미한다. 정적인 화면에 사용한다. CSR은 웹클라이언트 서버가 클라이언트에게 자바스크립트 코드를 주고 웹브라우저가 이를 실행해 서버에 데이터를 요청하고 받은 데이터를 이용해 렌더링하는 ..
2023.11.10 -
[Spring] WAS 멀티 쓰레드에 대한 나름의 이해
백엔드 개발자에게 매우매우 중요한 개념이다. 쓰레드는 실행 흐름이다. 동시에 요청이 들어올때 하나의 쓰레드만 있다면 먼저 들어온 요청을 끝내고 다음 요청을 한다. 하지만 먼저 들어온 요청에서 지연이 발생하면 자연스럽게 그 다음 요청도 지연된다. 이는 사용자 경험을 떨어뜨린다. 이를 해결하기 위해 멀티 쓰레드를 사용한다. 하지만 요청이 들어올때 마다 쓰레드를 생성한다면 비용이 크다. 콘텍스트 스위칭 비용, 쓰레드 생성, 제거 비용이 발생하고 이는 CPU의 효율을 떨어뜨리고 응답 속도가 늦어진다. 또한 쓰레드 생성에 제한이 없으면 요청이 너무 많이 들어오면 서버가 죽는다. 이러한 문제 때문에 쓰레드풀이라는 것을 만들어 사용한다. 쓰레드풀이란 쓰레드를 정해진 개수만큼 미리 만든 것이다. 쓰레드풀에서는 쓰레드를..
2023.11.10