Spring/Spring MVC

HttpSession and RESTful APIs스프링 공식 문서 Spring Session은 Session을 헤더로 주고 받으면서 RESTful API와 동작할 수 있다. Tomcat의 경우 SessionID를 JSESSIONID라는 키의 쿠키를 생성해서 set-cookie 헤더에 담아서 전달 Requset시 Header에 SessionId가 포함되어 절달된다면 (Cookie 헤더에 SeesionId가 전달될 것) 서블릿 컨테이너는 세션을 발급하지 않고 해당 SessionId에 해당하는 세션을 전달하게 되고, SessionId가 포함되지 않는다면 HttpSession을 요구하는 모든 요청에 대해 새로운 Session을 발급.private String createSession(HttpServletReq..
Spring SessionSpring Session 공식 문서Spring Sesison은 유저 세션 정보 관리를 위한 API와 구현체를 제공한다. Spring session 은 세션 클러스터링을 유지하도록 한다.세션 클러스터링이란?클러스터는 군집이나 무리를 뜻함두 대 이상의 WAS가 동시에 한가지 업무를 수행하도록 만드는 기술세션 클러스터링은 WAS가 두 대 이상 설치되어 있을 경우 동일한 세션으로 세션 관리하는 것을 의미동일한 세션으로 여러 WAS 서버에서 사용할 수 있다는 말 예를 들어서 설명하자면,요청이 오면 L4 스위치가 해당 사용자가 접속했던 WAS로 유도해서 사용하던 세션을 그대로 사용할 수 있도록하지만 스레드 풀이 고갈되어서 다른 WAS를 사용하게 된다면 이때 세션 불일치 문제가 발생할 수 ..
Spring MVC에서 HandlerAdapater가 필요한 이유 위 사진은 Spring MVC 구조이다. 여기서 다른 건 다 알겠는데 왜 Handler Adapter 존재 이유에 대해 궁금해졌다.V4구조 처럼 프론트 컨트롤러에서 요청에 대한 매핑 정보를 가져온 후 바로 해당 컨트롤러를 호출하면 되지 않나?HandlerAdapater가 없다면아래 코드는 HandlerAdapter가 없는 프론트 컨트롤러이다. 우리가 사용할 컨트롤러를 `controllerMap`에 저장해 두었다가 사용한다.@WebServlet(name = "frontControllerServletV4", urlPatterns = "/front-controller/v4/*")public class FrontControllerServletV4..
김영한 강사님 "스프링 mvc" 내용 정리 + Java의 정석 일부 포함프로세스와 쓰레드포스팅 글 참고 [ASAC 6기] 프로그램, 프로세스와 스레드✅프로그램 VS. 프로세스프로그램: 정적, 실행 가능한 파일 형태프로세스: 실행된 프로그램, cpu와 메모리 할당받아서 프로그램이 실행된 형태 ✅프로세스 VS. 스레드프로세스: 실행단위가 크고 +mystudylog.tistory.com멀티 쓰레딩의 장점도스(DOS)와 같은 OS는 한번에 한가지 작업만 수행 가능.윈도우와 같은 멀티태스킹이 가능한 OS는 동시에 여러 작업 수행 가능CPU의 사용률을 향상시킨다.자원을 보다 효율적으로 사용할 수 있다.사용자에 대한 응답성이 향상된다.작업이 분리되어 코드가 간결해진다.메신저로 채팅하면서 파일을 다운로드 받거나 음성 ..
웹 앱 개발에서 서블릿 컨테이너 사용웹 브라우저는 HTTP라는 프로토콜을 사용하여 네트워크를 통해 서버와 통신한다.서블릿은 의미 있는 비즈니스 로직 외 모든 걸 지원서블릿: 서블릿 컨테이너와 직접 상호작용하는 자바 객체위 사진에서 초록색 부분만 의미 있는 비즈니스 로직이다.나머지는 HTTP메시지를 처리하 위해 수행해야하는 반복적인 작업이다.HTTP를 이해하고 HTTP 요청과 응답을 자바 앱으로 변환하는 역할을 하는 것이 서블릿 컨테이너, 이며 자바 앱이 HTTP 메시지를 변환하는 역할을 한다.서블릿 컨테이너를 사용하면 자바 앱은 통신 계츨을 구현할 필요가 없다. 가장 널리 알려진 구현체 중 하나는 톰캣(Tomcat)이다.실제 앱에서 사용되는 솔루션은 다양하다. 제티(Jetty), 제이보스(Jboss), ..
WAS와 WS의 차이점은 "웹 풀스택" 카테고리에 가면 설명이 있으니 참고 프로젝트를 하다가 "스프링부트는 웹 서버 내장하고 있는데 nginx 같은 웹 서버를 따로 사용해야할까요?"라는 질문을 받았다. 결론부터 말하자면api통신 시: WS필요 없음서버에서 페이지 반환 해야하는 상황이라면: 필요할 수도 있음 (대량의 트래픽이 오고간다면) 이 질문에 나도 대답을 하지 못해서 인프런의 갓영한님의 "스프링 MVC 1편"에 해당 내용에 대해 언급한게 있어서 해당 강의를 보고 내용을 정리해보고자 했다.WAS만 사용할 경우 WAS가 하는 일은 다음과 같다동적 파일 제공정적 리소스 제공애플리케이션 로직 실행여기서 알 수 있듯이 WAS가 정적 리소스도 제공한다는 사실이다.html, css, js, 이미지 같은 정적 리소..
HTTP API를 제공하는 경우 데이터를 전달해야 하므로, http 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. https://mystudylog.tistory.com/40 HTTP 요청 메시지 - 텍스트, JSON HTTP message body 데이터 조회 - text 요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우는 @RequestParam , @ModelAttribute 를 사용할 수 없다 1. InputStream HTTP 메시지 바디의 데이 mystudylog.tistory.com 위 링크에서는 요청과 응답이 모두 정리되어 있으므로 여기서는 응답 부분만 정리하겠다. @GetMapping("/response-body-string-v1") publ..
서버에서 응답 데이터를 만드는 방법은 크게 3가지이다 정적 리소스: 정적인 HTML, css, js를 제공해서 응답하는 것 뷰 템플릿: 동적인 HTML을 제공할 때는 뷰 템플릿을 사용 HTTP 메시지 사용: HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 정적 리소스로 응답 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static, /public, /resources, /META-INF/resources src/main/resources 는 리소스를 보관하는 곳이고, 또 클래스패스의 시작 경로이다. 따라서 다음 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스..
API 예시 회원 관리를 HTTP API로 만든다 생각하고 매핑을 어떻게 하는지 알아보자. 회원 관리 API 회원 목록 조회: GET → /users 회원 등록: POST → /users 회원 조회: GET → /users/{userId} 회원 수정: PATCH → /users/{userId} 회원 삭제: DELETE → /users/{userId} @RestController @RequestMapping("/mapping/users") public class MappingClassController { @GetMapping public String user() { return "get users"; } @PostMapping public String addUser() { return "post user..
hapBday
'Spring/Spring MVC' 카테고리의 글 목록