분류 전체보기 1341

Ch06. 스프링 MVC(기본 기능) - HTTP 응답

정적 리소스 예) 웹 브라우저에 정적인 HTML, css, js을 제공할 때는, 정적 리소스를 사용한다. 뷰 템플릿 사용 예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다. HTTP 메시지 사용 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다 HTTP 응답 - 정적 리소스, 뷰 템플릿 정적 리소스 스프링 부트는 클래스 패스의 다음 디렉터리에 있는 정적 리소스를 제공한다. /static /public /resources /META-INF/resources src/main/resources 는 리소스를 보관하는 곳이고, 또 클래스 패스의 시작 경로이다. 정적 리소스는 해당 파일을 변경 없..

Ch06. 스프링 MVC(기본 기능) - 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 사용 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, P..

Ch06. 스프링 MVC(기본 기능) - HTTP 요청(기본, 헤더 조회)

@Slf4j @RestController public class RequestHeaderController { @RequestMapping("/headers") public String headers(HttpServletRequest request, HttpServletResponse response, HttpMethod httpMethod, Locale locale, @RequestHeader MultiValueMap headerMap, @RequestHeader("host") String host, @CookieValue(value = "myCookie", required = false) String cookie) { log.info("request={}", request); log.info("res..

Ch06. 스프링 MVC(기본 기능) - 요청 매핑(API 예시)

회원 목록 조회: GET /users 회원 등록: POST /users 회원 조회: GET /users/{userId} 회원 수정: PATCH /users/{userId} 회원 삭제: DELETE /users/{userId} @RestController @RequestMapping("/mapping/users") public class MappingClassController { /** * 회원 목록 조회: GET /users * 회원 등록: POST /users * 회원 조회: GET /users/{userId} * 회원 수정: PATCH /users/{userId} * 회원 삭제: DELETE /users/{userId} */ @GetMapping() public String user(){ retur..

Ch06. 스프링 MVC(기본 기능) - 요청 매핑

기본 요청 @RequestMapping(value = "/hello-basic") public String helloBasic(){ log.info("helloBasic"); return "ok"; } @RestController @Controller는 반환 값이 String 이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다. @RestController는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다. 따라서 실행 결과로 ok 메시지를 받을 수 있다. @ResponseBody와 관련이 있는데, 뒤에서 더 자세히 설명한다. @RequestMapping("/hello-basic") /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다. 대부분..

Ch06. 스프링 MVC(기본 기능) - 로깅 간단히 알아보기

운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 참고로 로그 관련 라이브러리도 많고, 깊게 들어가면 끝이 없기 때문에, 여기서는 최소한의 사용 방법만 알아본다 로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리( spring-boot-starter-logging )가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용한다 SLF4J - http://www.slf4j.org Logback - http://logback.qos.ch SLF4J Simple Logging Facade for Java (SLF4J) The Simple L..

Ch06. 스프링 MVC(기본 기능) - 프로젝트 생성

왜 Jar를 사용했는지? JSP를 사용하지 않기 때문에 Jar를 사용하는 것이 좋습니다. 앞으로 스프링 부트를 사용하면 이 방식을 주로 사용하게 됩니다. Jar를 사용하면 항상 내장 서버(톰캣 등)를 사용하고, webapp 경로도 사용하지 않습니다. 내장 서버 사용에 최적화되어 있는 기능입니다. 최근에는 주로 이 방식을 사용합니다. War를 사용하면 내장 서버도 사용가능 하지만, 주로 외부 서버에 배포하는 목적으로 사용합니다. Welcome Page 만들기 스프링 부트에 Jar 를 사용하면 /resources/static/index.hml 위치에 index.html 파일을 두면 Welcome 페이지로 처리해준다. (스프링 부트가 지원하는 정적 콘텐츠 위치에 /index.html 이 있으면 된다. 로그 출..

Ch05. 스프링 MVC(구조 이해) - 스프링 MVC(실용적인 방식)

스프링 MVC는 개발자가 편리하게 개발할 수 있도록 수많은 편의 기능을 제공한다. 실무에서는 지금부터 설명하는 방식을 주로 사용한다. @Controller @RequestMapping("/springmvc/v3/members") public class SpringMemberControllerV3 { private MemberRepository memberRepository = MemberRepository.getInstance(); //@RequestMapping(value = "/new-form", method = RequestMethod.GET) //GET 방식만 호출해 준다 @GetMapping("/new-form") public String newForm(){ //문자열 반환시 뷰의 논리적인 이름..

Ch05. 스프링 MVC(구조 이해) - 스프링 MVC(컨트롤러 통합)

@Controller @RequestMapping("/springmvc/v2/members") public class SpringMemberControllerV2 { private MemberRepository memberRepository = MemberRepository.getInstance(); //@RequestMapping("/springmvc/v2/members/new-form") @RequestMapping("/new-form") public ModelAndView newForm(){ return new ModelAndView("new-form"); } //@RequestMapping("/springmvc/v2/members/save") @RequestMapping("/save") publi..

Ch05. 스프링 MVC(구조 이해) - 스프링 MVC(시작하기)

@RequestMapping 스프링은 애노테이션을 활용한 매우 유연하고, 실용적인 컨트롤러를 만들었는데 이것이 바로 @RequestMapping 애노테이션을 사용하는 컨트롤러이다. 다들 한 번쯤 사용해보았을 것이다. 여담이지만 과거에는 스프링 프레임워크가 MVC 부분이 약해서 스프링을 사용하더라도 MVC 웹 기술은 스트럿츠 같은 다른 프레임워크를 사용했었다. 그런데 @RequestMapping 기반의 애노테이션 컨트롤러가 등장하면서, MVC 부분도 스프링의 완승으로 끝이 났다. @RequestMapping RequestMappingHandlerMapping RequestMappingHandlerAdapter 가장 우선순위가 높은 핸들러 매핑과 핸들러 어댑터는 RequestMappingHandlerMapp..