Spring/SpringMVC 45

HTTP 요청 파라미터 - @ModelAttribute & 단순 텍스트

스프링은 요청 파라미터를 받아서 필요한 객체를 만들어주고 객체에 값을 넣어주는 @ModelAttribute 기능을 제공한다. 요청 파라미터를 바인딩 받을 객체를 만들어 보면 // HelloData package hello.springmvc.basic; import lombok.Data; @Data public class HelloData { private String username; private int age; } 롬복 @Data @Getter , @Setter , @ToString , @EqualsAndHashCode , @RequiredArgsConstructor 를 자동으로 적용해준다. request 패키지의 RequestParamController에서 아래와 같이 지정해주고 돌려주면 로그가 ..

Spring/SpringMVC 2022.04.29

HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form & RequestParam

클라이언트에서 서버로 요청 데이터를 전달할 때 다음 3가지 방법을 사용한다. GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 피이징등에서 많이 사용 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20 예) 회원 가입, 상품 주문, HTML Form 사용 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, PATCH 스프링으로 요..

Spring/SpringMVC 2022.04.29

HTTP 요청 - 기본, 헤더 조회

HTTP 헤더 정보를 조회하는 방법을 알아보자. RequestHeaderController을 만들어 주고 package hello.springmvc.basic.request; import lombok.extern.slf4j.Slf4j; import org.apache.tomcat.jni.Local; import org.springframework.http.HttpMethod; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestHeader; import org.spring..

Spring/SpringMVC 2022.04.29

요청 매핑 - API 예시

회원 관리를 HTTP API로 만든다 하고 매핑을 어떻게 하는지 알아보자.(URL 매핑만 신경쓴다.) 회원 관리 API 회원 목록 조회: GET /users 회원 등록: POST /users 회원 조회: GET /users/{userId} 회원 수정: PATCH /users/{userId} 회원 삭제: DELETE /users/{userId} MappingClassController를 만들어 보자. // MappingClassController package hello.springmvc.basic.requestmapping; import org.springframework.web.bind.annotation.*; @RestController public class MappingClassControlle..

Spring/SpringMVC 2022.04.29

스프링MVC 기본기능

프로젝트를 먼저 생성해보자. 여기서 프로젝트 생성 후 SpringmvcApplication을 돌려보자. package hello.springmvc; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringmvcApplication { public static void main(String[] args) { SpringApplication.run(SpringmvcApplication.class, args); } } Welcome 페이지도 한번 만들어 보자. 스프링 부트에 Ja..

Spring/SpringMVC 2022.04.29

SpringMVC 구조 정리

직접 만든 MVC 프레임 워크 구조를 살피면서 SpringMVC 구조와 비교해보자. SpringMVC 구조는 고객의 요청이 오면(HTTP 요청) FrontController 역할을 하는 DispatcherServlet이 핸들러 매핑에게 핸들러 조회를 하고 여러개의 핸들러를 스프링 부트가 등록을 해놓는다. 핸들러 어댑터 목록에 던지면 핸들러 어댑터가 얘를 처리할 수 있는데 하고 핸들러 어댑터가 튀어나온다. 핸들러 어댑터를 통해서 실제 핸들러를 호출하고(컨트롤러) 반환을 해준다. 그리고 View가 렌더가 되면서 실제 HTTP 고객의 응답에 나가게 된다. HandlerMapping은 2개가 있다. 0 = RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapp..

Spring/SpringMVC 2022.04.28

스프링 MVC를 시작과 컨트롤러 통합 & 실용적인 방식

@RequestMapping @RequestMapping 애노테이션 컨트롤러가 등장하면서, MVC 부분도 스프링의 한 부분이다. @RequestMapping RequestMappingHandlerMapping RequestMappingHandlerAdapter 이제 본격적으로 컨트롤러를 @RequestMapping 기반의 스프링 MVC 컨트롤러로 변경해보자. 회원 등록 폼을 만들어보자. SpringMemberFormControllerV1 package hello.setvlet.web.springmvc.v1; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping..

Spring/SpringMVC 2022.04.28

뷰 리졸버

뷰 리졸버에 대해서 알아보자. View를 사용할 수 있도록 아래 코드를 추가해주고 return new ModelAndView("new-form"); 원래 만들었던 OldController에서 return 값을 new-form으로 설정해준다. package hello.setvlet.web.springmvc.old; import org.springframework.stereotype.Component; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servle..

Spring/SpringMVC 2022.04.28

핸들러 매핑과 핸들러 어댑터

springmvc 패키지를 만들고 OldController 클래스를 만들어보자. 이게 과거 버전 스프링 컨트롤러이다. 실행하여 @Component에 적혀있는 url로 들어가게 되면 http://localhost:8080/springmvc/old-controller package hello.setvlet.web.springmvc.old; import org.springframework.stereotype.Component; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import..

Spring/SpringMVC 2022.04.28