Spring에서 Filter와 Interceptor는 모두 요청과 응답을 중간에 가로채서 처리하는 목적으로 사용된다. 하지만 이들 사이에는 몇가지 주요한 차이점이 존재한다. 1. 작동위치 - Filter : 위 그림에서 보이는 것처럼 필터는 Servlet Contrainer level에서 작동한다. 즉 Spring Context가 시작되기 전에 이미실행되기 때문에 Spring과 상관없이 웹 App의 모든 요청/응답에 대해서 동작할 수 있다. - Interceptor : 인터셉터는 Spring context level에서 작동한다. 따라서 Spring MVC의 DispatcherServlet 이 컨트롤러를 호출하기 전후로 동작한다. 따라서 특정 컨트롤러 또는 핸들러 매핑을 타겟으로 설정할 수 있다. #핸들..
들어가며 일전의 @ResponseBody 어노테이션에 대해서 정리한 포스팅이 있다. https://data-study-clip.tistory.com/189?category=1034056 Spring - @ResponseBody 사용원리 클라이언트에서 localhost:8080/hi-spring url로 요청이 들어왔다고 치자 그럼 톰켓서버에서 해당 url 요청이 들어왔다고 Spring Container에다가 던져준다. 스프링컨테이너에 있는 Controller에서 매핑되는게 data-study-clip.tistory.com @ResponseBody라는 어노테이션이 없으면 ViewResolver에게 던져서 템플릿엔진으로 처리하게 되고 @ResponseBody 어노테이션이 붙어있으면 데이터 그대로 내려주게된다..
개발환경 - IDLE : IntelliJ - Java : OracleJDK 17 - node.js : 16.17 version - gradle 프로젝트 - mariaDB 1. 생성한 Springboot 프로젝트 의 src/main 디렉토리에 React Project생성 (Spring boot 프로젝트 생성방법은 구글링하면 Spring.io에서 제공하는 initializr 사용법이 있다.) npx create-react-app 프로젝트명 이때 프로젝트명에는 대문자를 사용할 수 없다. react project 가 잘생성되었다면 아래와 같이 생성한 디렉토리가 보일 것이다. 2. 생성한 React Project의 Proxy 설정 로컬 개발 환경에서 본인이 별도의 설정을 따로하지 않았다면 React 프로젝트는 3..
클라이언트에서 localhost:8080/hi-spring url로 요청이 들어왔다고 치자 그럼 톰켓서버에서 해당 url 요청이 들어왔다고 Spring Container에다가 던져준다. 스프링컨테이너에 있는 Controller에서 매핑되는게 있는데 그 매핑되는 녀석이 @ResponseBody라는 어노테이션이 안붙어있을때는 ViewResolver에게 던져서 템플릿엔진으로 처리하게 되는데 @ResponseBody 어노테이션이 붙어있으면 데이터 그대로 내려주게된다. 만약 String 문자를 내려주면 그대로 내려주는데 만약 객체를 내려주면 json방식으로 내려주게된다. 그래서 @ResponseBody 어노테이션이 붙엇을때 HttpMessageConverter라는 녀석이 동작한다. 즉 객체를 내려주는 경우에는 H..
Dispathcher-Servlet이란? dispatch는 "보내다" 라는 뜻을 가진 단어인데 Servlet에서 Dispatcher Servlet이라는 프론트 컨트롤러(Front Controller)가 존재한다. (#프론트 컨트롤러란? : 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모튼 요청을 받아서 처리해주는 컨트롤러로써 MVC 구조에서 함께 사용되는 디자인 패턴) 즉 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 공통적인 작업을 먼저 처리해준 뒤 매핑된 컨트롤러에 보내주는 컨트롤러를 Dispatcher-Servlet이라고 한다. [ DisPatcher-Servlet의 장점 ] Spring MVC는 DispatcherServlet이 등장함에 따라 Web.xml의 역할을 상당히..
JavaMailSender 라이브러리는 라이브러리명에 걸맞게 발송 라이브러리이다. 발송대상은 메일 서버( smtp) 즉 javamail에 등록된 호스트 주소로 접속해서 그 서버에게 메일 좀 보내주는 역할만하고 끝나는 라이브러리이기 때문에 상대 메일서버에서 뭔가 오류가 발생되었다는 정보를 리턴받을 수는 없는 라이브러리이다. 즉 JavaMailSender에서 메일 발송이 성공되었다는 것은 나의 호스트주소로 메일 내용을 문제없이 전송했다는 것이지 이것이 받는 사람의 서버까지 정상적으로 도착했다는 뜻은 결코아니다. 그래서 메일 발송에 대한 실패 정보를 받고자 한다면 별도의 메일발송 시스템을 구축하고 메일서버와 도메인이 필요하다. 또한 발송하는 메일 서버와 발신자의 도메인이 같아야한다. 그렇게 해줘야만 메일함 꽉..