Spring boot/Spring MVC 1

Controller, Service, DAO 셋을 이해하려면 먼저 MVC패턴이 왜 등장했는지부터 알아봐야 한다. 1. MVC 패턴 기존의 서블릿과 JSP 방식은 하나의 파일에 비지니스 로직(서비스 호출) 과 뷰 렌더링(HTML)이 모두 존재 했다. 즉, 하나의 파일에 자바코드와 HTML 코드가 전부 들어가 있었다. 그러다 보니 코드의 복잡성이 올라가고 결국 유지보수가 어려워 졌다. 이러한 문제를 해결하기 위해 MVC(Model View Controller)패턴이 도입되었다. View(HTML)와 Controller(비지니스 로직)을 분리하였다. 그래서 view에서 HTTP 요청을 보내면 Controller가 비지니스 로직(회원가입, 상품주문 등)을 수행하였다. 그리고 view 렌더링에 필요한 데이터는 M..
@PathVariable VS @RequestParam @PathVariable @RequestMapping 은 URL 경로를 템플릿화(동적 처리) 할 수 있는데, @PathVariable 을 사용하면 매칭 되는 부분을 편리하게 조회할 수 있다. 예) items/{itemId} 일때 @PathVariable("itemId")을 사용하면 itemId 조회 가능 변수 이름이 같을 때 @PathVariable로 생략 가능 예) @PathVariable("itemId") Long id -> @PathVariable Long itemId @RequestParam URL 경로로 GET 쿼리 파라미터(ex) xxx?username=kim) 요청이 오거나 Post로 HTML Form으로 파라미터가 넘어올때 해당 파라미..
스프링 MVC - 웹 페이지 만들기 1. 요구사항 분석 상품 도메인 모델 상품 ID 상품명 가격 수량 상품 관리 기능 상품 목록 상품 상세 상품 등록 상품 수정 프론트엔드 개발자가 만든 html 폼 상품목록(등록, 상세 버튼) 상품등록 폼(저장, 취소 버튼) 상품 상세(수정, 목록 버튼) 상품 수정 폼(저장, 취소 버튼) 1) 클라이언트가 상품 목록 요청 2) `상품목록 controller`에서 `상품목록 폼` 랜더링 2-1) 상품등록 버튼 클릭 -> `상품등록 controller`에서 `상품등록 폼` 랜더링 3-1) 상품저장 버튼 클릭 -> `상품저장 controller`에서 `상품상세 폼` 랜더링 3-2) 취소 버튼 클릭 -> `상품등록 폼`에서 `상품목록 링크`로 이동 2-2) 상품상세 버튼 클릭 ..
스프링 MVC - 기본 기능 1. 프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.4.x Project Metadata Group: hello Artifact: springmvc Name: springmvc Package name: hello.springmvc Packaging: Jar (주의!) Java: 11 Dependencies: Spring Web, Thymeleaf, Lombok war를 사용하면 /webapp/ 경로에 index.html 을 두면 http://localhost:8080 호출시 index.html 페이..
스프링 MVC - 구조 이해 1. 스프링 MVC 전체 구조 직접 만든 프레임워크 스프링 MVC 비교 FrontController -> DispatcherServlet handlerMappingMap -> HandlerMapping MyHandlerAdapter -> HandlerAdapter ModelView -> ModelAndView viewResolver -> ViewResolver MyView -> View DispatcherServlet 구조 스프링 MVC도 프론트 컨트롤러 패턴으로 구현 프론트 컬르롤러가 디스패처 서블릿 디스패처 서블릿도 부모 클래스에서 HttpServlet을 상속받아 서블릿으로 동작 스프링 부트는 디스패처 서블릿을 자동으로 등록하면서 모든경로(urlPatterns="/")에 ..
MVC 프레임워크 만들기 1. 프론트 컨트롤러 패턴 소개 FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받는다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출해준다. 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹 MVC의 DIspatcherServlet이 FrontController 패턴으로 구성 2. 프론트 컨트롤러 도입 - v1 V1 구조 HTTP요청이 오면 프론트 컨트롤러에 URL매핑 정보에서 컨트롤러를 조회한다. 조회한 컨트롤러를 호출한다. 해당 컨트롤러에서 직접 JSP forward를 수행한다. view 렌더링이 수행된다. 프론트 컨트롤러 분석 urlPatterns url..
서블릿, JSP, MVC 패턴 1. 회원 관리 웹 애플리케이션 요구사항 회원 정보 이름: username 나이: age 기능 요구사항 회원 저장 회원 목록 조회 회원 도메인 모델 id 는 Member 를 회원 저장소에 저장하면 회원 저장소가 할당한다 회원 저장소 회원 저장소는 싱글톤 패턴을 적용했다. 스프링을 사용하면 스프링 빈으로 등록하면 되지만, 지금은 최대한 스프링 없이 순수 서블릿 만으로 구현하는 것이 목적이다. 싱글톤 패턴은 객체를 단 하나만 생생해서 공유해야 하므로 생성자를 private 접근자로 막아둔다 회원 저장소 테스트 코드 회원을 저장하고, 목록을 조회하는 테스트를 작성했다. 각 테스트가 끝날 때, 다음 테스트에 영향을 주지 않도록 각 테스트의 저장소를 clearStore() 를 호출해..
서블릿 Hello 서블릿 @ServletComponentScan : 해당 패키지와 하위 패키지의 servlet을 모두 찾아서 등록해준다. @WebServlet : 서블릿 애노테이션 name : 서블릿 이름 urlPatterns : URL 매핑 HTTP 요청을 통해 매핑된 URL이 호출되면 서블릿 컨테이너는 다음 메서드를 실행한다. protected void service(HttpServletRequest req, HttpServletResponse resp) 개발시 편리하게 HTTP 요청 메시지를 다 보고싶다면? application properties에 다음 문장을 추가하자. logging.level.org.apache.coyote.http11=debug 참고 운영서버에 모든 요청정보를 다 남기면 성능..
웹 애플리케이션 이해 1. 웹서버, 웹 애플리케이션 서버 웹 서버는 정적 리소스(파일), WAS(Web Application Server)는 정적 리소스 파일 제공 및 애플리케이션 로직 실행 웹 서버도 프로그램을 실행하는 기능을 포함하기도 하며,WAS도 웹 서버의 기능을 제공하기 때문에 둘 용어의 경계가 모호함 WAS는 애플리케이션 코드를 실행하는데 더 특화 1) 웹 시스템 구성 - WAS, DB WAS, DB만으로 시스템 구성 가능 WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능 WAS가 너무 많은 역할을 담당, 서버 과부하 우려 비싼 애플리케이션 로직이 정적 리소스로 인해 수행이 어려울 수 있음 WAS장애시 오류 화면도 노출 불가능 2) 웹 시스템 구성 - WEB, WAS, DB 정적 리소스..
코드 미식가
'Spring boot/Spring MVC 1' 카테고리의 글 목록