🍿 강의수강/스프링MVC2편 🔒

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션 8. 예외 처리와 오류 페이지 - DispatcherType과 인터셉터

1. DispatcherType과 인터셉터실습LogInterceptorpackage me.progfrog.exception.interceptor;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import lombok.extern.slf4j.Slf4j;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import java.util.UUID;@Slf4jpublic class LogInterceptor implements HandlerInter..

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션 8. 예외 처리와 오류 페이지 - DispatcherType과 필터

1. DispatcherType1. WAS(여기까지 전파!!) 2. WAS(/error-page/500 다시 요청) -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러(/error-page/500) -> View예외가 발생해서 WAS까지 전파된다.WAS는 오류 페이지 경로를 찾아서 내부에서 오류 페이지를 호출한다. 이때 오류 페이지 경로로 필터, 서블릿, 인터셉터, 컨트롤러가 모두 다시 호출된다.그런데, 로그인 인증 체크 같은 경우를 생각해 보면, 이미 필터나 인터셉터에서 로그인 체크를 모두 완료했다.따라서 서버 내부에서 오류 페이지를 호출한다고 해서 해당 필터나 인터셉터가 한번 더 호출되는 것은 매우 비효율적이다.결국 클라이언트로부터 발생한 정상 요청인지, 아니면 오류 페이지를 출력하기 위한 내부 요청..

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션 8. 예외 처리와 오류 페이지 - 서블릿 예외처리

1. 프로젝트 생성 우선, 스프링이 아닌 순수 서블릿 컨테이너는 어떻게 예외 처리를 하는지 알아보자!서블릿은 다음 2가지 방식으로 예외 처리를 지원한다.Exception(예외)response.sendError(HTTP 상태 코드, 오류 메시지) 2. Exception(예외)개요자바 직접 실행자바의 메인 메서드를 직접 실행하는 경우 main이라는 이름의 쓰레드가 실행실행 도중에 예외를 잡지 못하고, 처음 실행한 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료됨 웹 애플리케이션웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행됨애플리케이션에서 예외가 발생했는데, 예외를 잡지 못하고 서블릿 밖까지 예외가 전달된다면...?WAS(여기까지..

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션 7. 로그인 처리 2 - 필터, 인터셉터

1. 서블릿 필터 - 소개등록, 수정, 삭제, 조회 등 모든 컨트롤러 로직에서 공통으로 로그인 여부를 확인해야 한다.이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사(cross-curring concern)라고 한다.등록, 수정, 삭제, 조회 등 여러 로직에서 공통으로 '인증'에 대해서 관심을 가지고 있다.공통 관심사는 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더나 URL의 정보들이 필요한데, 서블릿 필터나 스프링 인터셉터는 HttpServletRequest를 제공한다.필터는 서블릿이 지원하는 수문장이다! 필터 흐름필터를 적용하면 필터가 호출된 다음..

🍿 강의수강/스프링MVC2편 🔒

[스프링MVC2편] 섹션6. 로그인 처리 1 - 쿠키, 세션

1. 패키지 구조 설계hello.logindominitemmemberloginwebitemmemberlogin도메인이 가장 중요하다!도메인: 화면, UI, 인프라 등 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말함향후 web을 다른 기술로 바꾸어도, 도메인은 그대로 유지할 수 있어야 한다.이렇게 하려면, web은 domain을 알고 있지만 domain은 web을 모르도록 설계해야 한다.web은 domain에 의존하지만, domain은 web을 의존하지 않는다.즉, web 패키지를 모두 삭제해도 domain에는 전혀 영향이 없도록 의존관계를 설계하는 것이 중요하다. 아키텍처와 의존성1. 아키텍처(architecture)란?소프트웨어 시스템의 아키텍처란, 시스템을 구축했던 사람들이 만들..

프로그⸝⸝◜࿀◝ ⸝⸝
'🍿 강의수강/스프링MVC2편 🔒' 카테고리의 글 목록