분류 전체보기

스프링(서버)에서 응답 데이터를 만드는 방법 3가지 ① 정적 리소스 예) 웹 브라우저에 정적인 HTML, css, js를 제공할 때는, 정적 리소스를 사용한다. ② 뷰 템플릿 사용 예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다. ③ HTTP 메시지 사용 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 정적 리소스 정적 리소스는 해당 파일을 변경 없이 그대로 서비스하는 것이다. 스프링 부트는 다음 디렉터리에 있는 정적 리소스를 제공한다. ① /static ② /public ③ /resources ④ /META-INF/resources /META-INF/resources는 리소스를 ..
다음은 HTTP 요청 메시지를 통해 데이터를 전달하는 세 번째 방법에 대해 알아본다. ③ HTTP message body에 데이터를 직접 담아서 요청 - HTTP API에서 주로 사용(JSON, XML...) - POST, PUT... 요청 파라미터(GET, POST)를 사용한 이전 두 가지 방법과는 다르게, HTTP Message Body를 통해 데이터가 직접 넘어오는 경우에는 @RequestParam, @ModelAttribute를 사용할 수 없다. Text 메시지 전송 먼저 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하는 실습을 한다. HTTP 메시지 바디의 데이터를 InputStream 을 사용해서 직접 읽을 수 있다. @Slf4j @Controller public class Req..
HTTP 요청 메시지를 통해 데이터를 전달하는 세 가지 방법 중 GET, POST 메서드를 통해 요청하는 경우 사용하는 방식이다. 먼저 요청 파라미터를 바인딩 받을 객체를 만든다. @Data 어노테이션은 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 자동으로 적용해준다. package hello.springmvc.basic; import lombok.Data; @Data public class HelloData { private String username; private int age; } 지금까지는 @RequestParam을 통해 username, age를 받고 새로운 객체를 선언한 다음에 그 값을 넣어줬었다. @..
HTTP 헤더 조회 # HttpServletResponse & HttpServletResponse # HttpMethod : HTTP 메서드를 조회한다. # Locale : Locale 정보를 조회한다. # @RequestHeader MultiValueMap headerMap : 모든 HTTP 헤더를 MultiValueMap 형식으로 조회한다. ※ MultiValueMap : 하나의 키에 여러 개의 값을 받을 수 있다. # @RequestHeader("host") String host : 특정 HTTP 헤더를 조회한다. 속성 - 필수 값 여부: required - 기본 값 속성: defaultValue # @CookieValue(value = "myCookie", required = false) Stri..
API 매핑하기 리소스를 계층으로 식별하는 방식으로 다음과 같이 사용한다. 데이터를 넘기거나, 오류 등은 처리하지 않았다. @RestController @RequestMapping("/mapping/users") public class MappingClassController { /** 회원 관리 API 회원 목록 조회: GET '/users' 회원 등록: POST '/users' 회원 조회: GET '/users/{userId} 회원 수정: PATCH /users/{userId} 회원 삭제: DELETE /users/{userId} */ @GetMapping public String user() { return "get users"; } @PostMapping public String addUser()..
PathVariable - 단일 @RequestMapping 은 URL 경로를 템플릿화 할 수 있는데, @PathVariable 을 사용하면 매칭 되는 부분을 편리하게 조회할 수 있다. package hello.springmvc.basic.requestmapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * PathVariable 사용 * 변수명이 같으면 생..
실무에서는 로그 관리에 있어 SLF4J 인터페이스를 사용하고, 그 구현체로 Logback 라이브러리를 선택한다. ** 콘솔 뿐만 아니라 별도의 위치에 로그를 남길 수도 있으며, 네트워크로 로그를 전송할 수도 있다. # @RestController 어노테이션 @Controller 는 반환 값이 String 이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다. @RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력하여 문자열을 반환하면 그대로 String이 반환된다. # slf4j 인터페이스 Logger 자료형과 LoggerFactory를 할 때 slf4j 인터페이스를 선택한다. 시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시..
지금까지 ModelAndView를 생성하고 반환해줬지만, 실무에서는 다음과 같이 실용적으로 코드를 구성한다. 이전 실습에서 V3에서 V4로 넘어가면서 ModelView가 아닌 View를 가리키는 String만 반환하도록 개선한 것과 유사하다. - @RequestMapping시 실행되는 메서드의 반환형을 ModelAndView → String으로 변환한다. - 매우 유연하게 구현된 Spring의 @RequestMapping의 메서드에서는 Model을 메서드의 인자로 바로 받아올 수 있는데, 각 메서드별로 Member 추가 및 조회한 다음 model.addAttribute 메서드를 통해 처리를 수행한다. - 또한, @RequestParam을 통해 HttpServletRequest의 parameter도 바로 ..
@RequestMapping을 사용하면 RequestMappingHandlerMapping, RequestMappingHandlerAdapter를 사용한다는 의미이다. # @Controller - 스프링이 자동으로 스프링 빈으로 등록한다. @Controller은 @Component를 상속 받기 때문에 마찬가지로 컴포넌트 스캔의 대상이 된다. - 스프링 MVC에서 어노테이션 기반 컨트롤러로 인식한다. # @RequestMapping - 요청 정보를 매핑한다. 해당 URL이 호출되면 이 메서드가 호출된다. - 어노테이션을 기반으로 동작하므로, 메서드 이름(process)는 임의로 지어도 된다. # ModelAndView - 모델과 뷰 정보를 담아서 반환하면 된다. RequestMappingHandlerMap..
지금까지는 controllerMap에 특정 인터페이스를 지정하고 매핑하였기 때문에, 다른 인터페이스를 준수하는 컨트롤러는 매핑할 수 없었다. @WebServlet(name = "frontControllerServletV4", urlPatterns = "/front-controller/v4/*") public class FrontControllerServletV4 extends HttpServlet { private Map controllerMap = new HashMap(); public FrontControllerServletV4() { controllerMap.put("/front-controller/v4/members/new-form", new MemberFormControllerV4()); con..
Younngjun
'분류 전체보기' 카테고리의 글 목록 (4 Page)