본문 바로가기

Spring53

스프링 MVC - 웹페이지 만들기(1) 프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.6.x Project Metadata Group: hello Artifact: item-service Name: item-service Package name: hello.itemservice (package name에는 특수문자 x) Packaging: Jar (주의!) Java: 11 요구사항 분석 상품을 관리할 수 있는 서비스를 만들어보자. 상품 도메인 모델 상품 ID 상품명 가격 수량 상품 관리 기능 상품 목록 상품 상세 상품 등록 상품 수정 요구사항이 정리되고 디자이너, .. 2022. 4. 14.
스프링 MVC - HTTP 응답 3가지 방법 HTTP 응답 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지이다. 정적 리소스 예) 웹 브라우저에 정적인 HTML, css, js을 제공할 때는, 정적 리소스를 사용한다. 뷰 템플릿 사용 예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다. HTTP 메시지 사용 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 1. 정적 리소스 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static , /public , /resources , /META-INF/resources 2. 뷰 템플릿 뷰 템플릿을 거쳐서 HTML이 생성되고, 뷰가 응답을 만들어서 전.. 2022. 4. 13.
스프링 MVC - HTTP 요청 메시지 HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form HTTP 요청 데이터 조회 - 개요 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자. 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다. GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20 예) 회원 가입, 상품 주문, HTML Form 사용 .. 2022. 4. 11.
스프링 MVC - 요청 매핑 ( API 예시) 요청 매핑 MappingController 기본 요청 둘다 허용 /hello-basic, /hello-basic/ HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE method 특정 HTTP 메서드 요청만 허용 GET, HEAD, POST, PUT, PATCH, DELETE PathVariable 사용 변수명이 같으면 생략 가능 @PathVariable("userId") String userId -> @PathVariable userId PathVariable 사용 다중 파라미터로 추가 매핑 params="mode", * params="!mode" params="mode=debug" * params="mode!=debug" (! = ) * params = {"mo.. 2022. 4. 9.
스프링 MVC - 프로젝트 생성과 로깅 프로젝트 생성 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.6.x Project Metadata Group: hello Artifact: springmvc Name: springmvc Package name: hello.springmvc Packaging: Jar (주의!) Java: 11 Dependencies: Spring Web, Thymeleaf, Lombok 주의! > Packaging는 War가 아니라 Jar를 선택한다. JSP를 사용하지 않기 때문에 Jar를 사용하는 것이 좋다. 앞으로 스프링 부트를 사용하면 이 방식을 주로 사용하게 된다. Jar를 사용하면 항상 내장 서버(톰캣등)을 사용하고, webapp 경로도 사용하지 않.. 2022. 4. 8.
스프링 MVC - 구조 이해 스프링 MVC 전체 구조 동작 순서 1. 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 2. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 3. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다. 4. 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행한다. 5. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. 6. viewResolver 호출: 뷰 리졸버를 찾고 실행한다. JSP의 경우: InternalResourceViewResolver 가 자동 등록되고, 사용된다. 7. View 반환: 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를.. 2022. 4. 7.