예외 발생 시에도 JSON 응답 보내기 ResponseEntity를 사용해서 응답을 보내면 된다. public ResponseEntity<String> errorPage500Api() { String result = "error"; return new ResponseEntity(result, HttpStatus.BAD_REQUEST....
AOP
AOP = Aspect Oriented Programming = 관점 지향 프로그래밍 관점 지향이란 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. AOP에서 각 관점을 기준으로 모듈화한다는 것은 ...
ModelAttribute와 NoArgsConstructor 추가 시 아무것도 안들어가는 이슈
제목 그대로 다음과 같이 @NoArgsConstructor 애노테이션을 @ModelAttribute로 적용되는 컨트롤러 파라미터 클래스에 추가하니 제대로 쿼리를 날려도 아무것도 안들어가는 이슈가 발생했다. @GetMapping("/article") public ResponseEntity getArticles(@ModelAttribute SelectA...
컨트롤러 매개변수/반환 타입 유형
요청 파라미터(쿼리, form 데이터) HttpServletRequest @RequestMapping("/request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) HttpServletRequest에서 조회해서 꺼내올...
예외 처리와 오류페이지
서블릿 예외처리 서블릿의 예외처리 방식 Exception WAS <- 서블릿 컨테이너 <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러(예외발생) 웹 애플리케이션에서 발생한 예외를 잡지 못하면, 예외는 서블릿 컨테이너에까지 전달된다. 서블릿 컨테이너는 넘어온 예외를 기준으로 등록된 오류페이지를 조회한...
스프링 MVC 구조
과정 클라이언트가 서버로 요청하면 먼저 Dispatcher Servlet 받음 Dispatcher Servlet은 http 요청의 URL과 메소드를 보고 이것을 처리할 수 있는 핸들러(컨트롤러)를 찾기 위해 핸들러 매핑 과정을 진행한다. 핸들러를 찾으면 이 핸들러를 처리할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터를 실행시...
서블릿 필터
서블릿 필터 스프링에서 공통 관심사를 처리하기 위한 방법으로, 스프링 인터셉터와 함께 쓰이는 방법이다. 스프링 AOP를 사용하여 공통관심사를 처리할 수 있지만 웹과 관련된 공통 관심사는 서블릿 필터나 스프링 인터셉터를 사용하는 것이 좋다. 서플릿 필터나 스프링 인터셉터는 HttpServletRequest를 제공해주기 때문이다. 소개 필터 흐름 ...
쿠키 인증 vs 세션 vs JWT
쿠키 사용자가 로그인하면, 사용자 식별자를 암호화 또는 평문으로 쿠키에 담는 방식. 요청이 오면 쿠키에 담긴 식별자를 보고 유저를 구분한다. 장점 유효한 쿠키인지만 확인하면 되기에 서버자원과 비용을 아낄 수 있다. 서버를 무상태(stateless)로 만들어줌. 암호화를 하면 brute force 대응 ...
프론트 아키텍쳐 흐름
프론트 아키텍처 흐름 MVC Model - View -Controller로 나눈 아키텍처 Model 컨트롤러가 호출했을때, 요청에 맞는 역할을 수행한다. 비즈니스 로직을 구현하는 영역으로 응용프로그램에서 데이터를 처리하는 부분 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야한다. Contro...
스프링 게층구조
스프링 계층구조 Web 계층 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@Controller Advice) 등 외부 요청과 응답에 대한 전반적인 영역을 나타낸다. 외부 요청과 응답에 대한 전반적인 영역. 어플리케이션의 진입점이기 때...