3. Back-end
Spring MVC - [ DispatcherServlet ]
1. DispatcherServlet [ Spring MVC의 요청 처리 과정 ] DispatcherServlet은 각 서블릿이나 컨트롤러가 공통적으로 처리해야 할 부분을 전처리해준다. 외에도 많은 역할을 한다. 우선 클라이언트에게 요청이 들어오면 DispatcherServlet은 컨트롤러에서 뷰를 반환받아 해당 뷰를 응답으로 보내준다. 이 과정을 자세히 살펴보자. HandlerMapping은 Map으로 key(URL)-Value(메서드) 정보를 저장하고 있는다. DispatcherServlet은 HandlerMapping에서 URL에 해당하는 메서드 정보를 받고, 메서드를 호출한다. 메서드를 호출할 때 컨트롤러와 직접 연결되지 않고 HandlerAdapter를 거친다. 여러 HanlderAdapter ..
Spring MVC - [ 예외처리 ]
1. @ControllerAdvice / @ExceptionHandler 컨트롤러에 @ControllerAdvice 애노테이션을 붙여서 전역 예외 처리 클래스 작성이 가능하다. 매개변수로 패키지 경로를 넣어서 지정된 패키지만 예외처리할 수 있도록 설정이 가능하다. 메서드에 @ExceptionHandler 애노테이션을 붙여서 해당하는 예외에 대한 처리를 할 수 있다. 예외 처리 메서드가 중복된 경우, 예외가 발생한 메서드가 있는 컨트롤러 내의 예외 처리 메서드가 우선이다. //@ControllerAdvice // 모든 패키지에 처리 @ControllerAdvice("com.fastcampus.ch2") // 지정된 패키지에서 발생한 예외만 처리 public class GlobalCatcher { @Exce..
Spring MVC - [ 로그인 시 원래 목적 페이지로 이동 ]
홈 화면에서 만약 로그인이 안 된 상태라면, 게시판 클릭 시 로그인 페이지로 이동한다. 여기서 로그인했을 때 홈 화면이 아니라 게시판 페이지로 이동하는게 사용자 입장에서 편리할 것이다. 요청이 들어온 주소는 request.getHeader("refer") , 이동할 주소는 request.getRequestURI() 메서드를 통해 알 수 있다. (참고로 getRequestURL은 전체 주소가 다 나오고, getRequestURI는 주소가 컨텍스트 루트부터 나온다.) 필터 클래스의 doFilter 메서드안에 후처리 작업부분에 요청이 들어온 주소와 이동할 주소를 받아서 출력하도록 했다. @Override public void doFilter(ServletRequest request, ServletRespons..
Spring MVC - [ Session(세션) ]
1. 세션 세션이란 쿠키를 이용해 서로 관련된 요청들을 하나로 묶은 것과 같다. (쿠키가 브라우저에 저장되므로)브라우저마다 개별 저장소(session객체)를 서버에서 제공해 준다. 차이점을 보자면 쿠키는 브라우저에, 세션은 서버에 저장된다는 점이다. 원래 요청과 응답은 독립적이다. 그러나 요청마다 브라우저가 쿠키를 이용해 세션ID를 보내줘서, 같은 세션ID를 가진 요청들을 하나로 묶는 것과 같다. 브라우저에서 요청을 보내면 서버는 무조건 세션 객체를 생성한다.(세션마다 세션ID 가지고 있음) 그리고 세션ID를 쿠키에 담아서 브라우저에 전송한다. 그러면 다음 요청부터는 브라우저가 세션ID정보를 쿠키에 담아서 서버에 전송한다. 즉 서버는 세션ID를 통해 같은 브라우저에서 온 요청인지 아닌지 알 수 있다. 세..
Spring MVC - [ Cookie(쿠키) ]
1. 쿠키 쿠키란 이름과 값의 쌍으로 구성된 작은 정보로 기본적으로 아스키 문자만 저장 가능하며, 한글은 URL인코딩을 해줘야 한다.(꺼낼때도 인코딩 필요) 서버에서 생성 후 브라우저에서 저장하며, 유효기간 이후에는 자동 삭제된다. 서버에 요청 시 domain과 path(하위경로까지)가 일치하는 경우에만 자동 전송된다. 2. 쿠키의 작동 과정 요청시에 쿠키가 생성되는 경우 서버가 쿠키를 생성하고, 응답헤더에 쿠키정보를 담아서 브라우저에 전송한다. 그리고 쿠키가 있는 경우에는 요청을 보낼 때 요청헤더에 쿠키가 담겨서 보내진다. 3. 쿠키의 생성 / 삭제 / 수정 1) 생성 Cookie cookie = new Cookie("id", "asdf");// 쿠키 생성 cookie.setMaxAge(60*60*24..
Spring MVC - [ redirect와 forward ]
Redirect와 Forward Redirect는 수동으로 하는 요청1, 자동으로 보내는 요청2 총 2번의 요청이 발생하고 forward는 요청이 1번만 발생. RedirectView 클라이언트로부터 요청이 들어오면 DispatcherServlet이 받아서 컨트롤러를 호출한다. 컨트롤러에서 메서드의 반환값이 redirect:~~ 이라면, DispatcherServlet이 RedirectView로 해당 값을 전달한다. 그러면 RedirectView는 아래 사진과 같이 응답을 생성해서 클라이언트로 전달해준다. JstlView 컨트롤러에서 반환값이 뷰이름이면, 우선 DispatcherServlet이 값을 받아서 InternalResourceViewResolve한테 보낸다. 그러면 InternalResource..