온라인 강의/Spring Framework 8

[강의] 스프링 MVC 2편 - 예외 처리와 오류 페이지(섹션8)

1. 서블릿 예외 처리두 가지 방식으로 예외 처리를 지원한다.Exceptionresponse.sendError(HTTP  상태 코드, 오류 메세지) 1) Exception(예외)자바 직접 실행자바의 메인 메서드를 직접 실행하는 main 이라는 쓰레드가 실행된다.실행 도중에 예외를 잡지 못하고 처음 실행한 main 메서드로 넘어가면 예외를 던지고, 쓰레드는 종료된다. 웹 애플리케이션웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다.예외가 발생했을 때, try ~ catch로 처리하면 아무런 문제가 없다.만약, 예외를 잡지 못하고 서블릿 밖으로 전달되면 어떻게 될까?WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외발생)  @Slf4jpubli..

[강의] 스프링 MVC 2편 - 필터, 인터셉터(섹션7)

1. 서블릿 필터공통 관심 사항요구사항을 보면 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다.문제는 로그인 하지 않은 사용자도 다음 URL을 직접 호출하면 상품 관리 화면에 들어올 수 있다. 공통 관심사는 AOP로 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 1) 서블릿 필터 소개필터는 서블릿이 지원하는 수문장이다. 필터 흐름HTTP 요청 → WAS → 필터 → 서블릿 → 컨트롤러 필터 제한HTTP 요청 → WAS → 필터 → 서블릿 → 컨트롤러  // 로그인 사용자HTTP 요청 →  WAS →  필터(적절하지 않은 요청이라 판단, 서블릿 호출 X) // 비 로그인 사용자 필터 인터페이스init(): 필터 초기화 메소드, 서블릿 ..

[스프링 MVC 1편] 웹 페이지 만들기

현재 문제점 정확한 에러의 이유는 모르겠지만, 타임리프의 templates/basic 경로를 handler에서 못 잡고 있다.로깅 메세지가 info이면 에러가 안 보여서 시간을 많이 낭비했다...(보여야 되는거 아닌가..ㅠㅠ)이 부분을 해결해야 강의를 계속 들을 수 있을 것 같다....요구사항 분석상품을 관리할 수 있는 서비스 만들기 상품 도메인 모델상품 ID상품명가격수량상품 관리 기능상품 목록상품 상세상품 등록상품 수정상품 도메인 개발  상품 객체package hello.itemservice.domain.item;import lombok.Getter;import lombok.Setter;@Getter @Setterpublic class Item { private Long id; private..

[스프링 MVC 1편] 구조 이해

DispatcherServlet 구조 살펴보기스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다.프론트 컨트롤러가 바로 디스패처 서블릿(DispatcherServlet)이다.디스패처 서블릿이 스프링 MVC의 핵심 DispacherServlet 서블릿 등록DispacherServlet도 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다.DispacherServlet → FramewokrServlet → HttpServletBean → HttpServlet스프링 부트는 DispacherServlet 을 서블릿으로 동작하면서 모든 경로(urlPatterns="/")에 대해서 매핑한다.참고: 더 자세한 경로가 우선순위가 높다. 요청 흐름서블릿이 호출되면 HttpServlet..

[스프링 MVC 1편] MVC 프레임워크 만들기

정리f else도 좋지만, 다형성으로 작성해보는 것도 좋다.프론트 컨트롤러 패턴FrontController 패턴 특징프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출입구를 하나로공통 처리기능프론트 컨트롤러를 제외한 나머지는 컨트롤러는 서블릿을 사용하지 않아도 됨 스프링 웹 MVC와 프론트 컨트롤러스프링 웹 MVC의 핵심도 바로 FrontController스프링 웹 MVC의 ✨DispatcherServlet이 FrontController 패턴으로 구현되어 있음프론트 컨트롤러 도입구조를 개선할 때는 구조만 개선해야한다?? => 참아 참으라구개선할 때는 같은 레벨의 코드만 개선한다. @WebServlet(name = "frontControllerServ..

[스프링 MVC 1편] 서블릿, JSP, MVC 패턴

강의 요약웹 애플리케이션을 Servlet / 템플릿 / MVC 세 방법으로 개발해보자.Servelt 개발 → 템플릿(JSP) 개발 → MVC 패턴 Servlet은 자바 코드에 HTML이 있어 불편하다.템플릿은 HTML 문서에 서비스 로직 등이 있어 불편하다.그래서 등장한게 MVC 패턴으로 각 역할을 Model, View, Controller로 나눈다. 회원 관리 앱 애플리케이션 요구 사항 기능 요구사항회원 저장회원 목록 조회 회원( Member )도메인 모델@Getter @Setterpublic class Member { private Long id; private String username; private int age; public Member () { } publi..

[스프링 MVC 1편] 웹 애플리케이션 이해

웹 서버, 웹 애플리케이션 서버 웹은 HTTP 프로토콜 기반HTML, TEXTImage,음성, 영상, 파일JSON XML거의 모든 형태의 데이터 전송 가능서버간에 데이터를 주고 받을 때도 HTTP 사용 웹 서버(Web Server)HTTP 기반으로 동작정적 리소스 제공, 기타 부가기능정적(파일) HTML, CSS, JS, 이미지, 영상예) NGINX, APACHE 웹 애플리케이션 서버(WAS - Web Application Server)HTTP 기반으로 동작웹 서버 기능 포함 + 정적 리소스 제공 가능프로그램 코드를 실행해서 애플리케이션 로직 수행동적 HTML, HTTP API(JSON)서블릿, JSP, 스프링 MVC예) 톰캣(Tomcat), Jetty, Undertow 웹 서버 VS 웹 애플리케이션 서..