웹 페이지 만들기요구사항 분석타임리프(Thymleaf)타임리프 동작 방식은 기존 코드를 th 태그가 붙은 코드로 대체하는 방식으로 동적으로 동작한다. 상품 목록 상품 등록 ID 상품명 가격 수량 회원id 상품명 10000 10 ..
스프링 MVC - 기본 기능Jar vs WarJar : 항상 내장 서버(톰켓 등)을 사용하고 webapp 경로를 사용하지 않고 내장 서버 사용에 최적화되어 있는 기능War : 내장 서버도 사용 가능하지만 주로 외부 서버에 배포하는 목적으로 사용한다.최근에는 Jar를 주로 사용 스프링 부트에 Jar 사용 시 /resources/static 위치에 index.html 파일을 두면 Welcome 페이지로 처리한다.Jar는 정적 컨텐츠들을 /resources/static 하위에 위치시켜 사용한다.로깅운영 시스템에서는 System.out.println()으로 콘솔에 필요한 정보를 출력하지 않고 별도의 로깅 라이브러리를 통해 로그를 출력한다.스프링 부트는 기본으로 SLF4J와 Logback 로깅 라이브러리를 사용한..
스프링 MVC - 구조 이해스프링 MVC 전체 구조 DispatcherServlet : 프론트 컨트롤러 패턴을 구현한 FrontController 역할을 하는 서블릿이다.스프링 MVC에서의 핵심스프링 부트에서 서블릿으로 자동 등록하면서 모든 경로("/")에 대해서 매핑한다.자세한 경로가 우선 순위가 더 높다.부모에서 service()가 시작되면 DispatcherServlet의 doDispatch()가 호출된다.핸들러 조회, 핸들러 어댑터 조회, 핸들러 어댑터 실행, 핸들러 실행, ModelAndView 반환의 기능을 수행한다. 스프링 MVC 동작 순서핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회..
MVC 프레임워크 만들기프론트 컨트롤러 패턴Front Controller : 공통 로직을 프론트 컨트롤러가 모두 처리를 하며 클라이언트의 요청에 맞는 컨트롤러를 찾아서 호출해준다.입구를 하나로 할 수 있으며 공통 로직을 처리할 수 있게 된다.기존과 달리 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.스프링 MVC의 DispatcherServlet이 Front Controller 패턴으로 구현되어 있다.프론트 컨트롤러 도입 - V1@WebServlet(name = "frontControllerServletV1", urlPatterns = "/front-controller/v1/*")public class FrontControllerServletV1 extends HttpServl..
서블릿, JSP, MVC 패턴서블릿과 자바 코드만으로 HTML을 만드는 것은 매우 비효율적이고 힘들기에 보완하기 위해 템플릿 엔진이 생겨났다.템플릿 엔진에는 JSP, Thymleaf, Freemarker, Velocity 등이 있다.JSP는 성능, 기능면에서 좋지 않기에 스프링과 잘 통합되는 Thymleaf를 주로 사용한다. JSP는 java가 아니기에 main/webapp에서 개발해야한다.URI 경로는 webapp까지는 디폴트이기에 webapp 하위부터 작성하면 되며 .jsp 확장자까지 포함해야 한다. JSP 코드 작성 방법java 코드(로직)는 안에 작성할 수 있다.로직은 보통 html 코드 이전에 작성는 자바 코드를 입력할 수 있다.는 자바 코드를 출력할 수 있다.필요한 객체들은 page impo..
서블릿서블릿 : 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술이다.스프링 MVC에서는 Controller로 사용된다. @ServletComponentScan : 서블릿을 찾아서 자동으로 등록해주는 역할@WebServlet : 서블릿 어노테이션 옵션 - 서블릿 이름 지정하는 name, url 매핑을 위한 urlPattern 등이 있다. => name, urlPattern 모두 중복되면 안된다. HTTP 요청을 통해 매핑된 URL이 호출되면 서블릿 컨테이너는 service() 메소드를 실행한다. 서블릿을 만들 때는 항상 HttpServlet을 상속받아야 한다. protected service() 메소드를 오버라이딩 해야한다. logging.level.org.apache.coyote.h..
웹 서버, 웹 애플리케이션 서버HTTP 메시지에 모든 것을 전송한다.HTML, TEXT, IMAGE, 파일, XML, JSON ... 등등 웹 서버 (Web Server) : 정적 데이터를 제공하는 서버HTTP 기반으로 동작하는 서버로 정적 리소스와 기타 부가기능을 제공한다. 웹 애플리케이션 서버 (WAS - Web Application Server) : 프로그램 코드를 실행해서 애플리케이션 로직을 수행할 수 있는 서버HTTP 기반으로 동작하며 웹 서버 기능(정적 리소스 제공)을 포함하고 있다.동적 HTML, HTTP API 등을 제공한다.서블릿, JSP, MVC 등이 WAS에서 동작한다. 웹 서버와 웹 애플리케이션 서버의 차이점웹 서버는 정적 리소스(파일)를 제공한다. (플러그인 등을 통해 코드를 실행..