MVC(10)
-
Spring MVC - RedirectAttributes
RedirectAttributes 리다이렉트를 사용할 때 사용된다. PRG(Post/Redirect/Get)을 이용할 때, 화면을 재사용할 수 있다. 사용 예제 1 2 3 4 5 6 7 @PostMapping("/add") public String addItemV6(Item item, RedirectAttributes redirectAttributes) { Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/basic/items/{itemId}"; }..
2021.04.14 -
Spring MVC - HttpMessageConverter, HandlerMethodArgumentResolver, HandlerMethodReturnValueHandler
HttpMessageConverter Http 요청 메시지를 받을 때, @RequestBody나 HttpEntity를 이용해 받거나, Http 응답 메시지를 작성할 때, @ResponseBody나 HttpEntity를 이용해 작성하면 메시지 컨버터라는 놈이 말 그대로 메시지를 변환해준다. 예를 들어, 컨트롤러 메서드에서 DTO로 리턴을 하고, 클라이언트에서 JSON으로 받기를 원할때(Accept) 메시지 컨버터가 알아서 DTO를 JSON으로 변환하여 Http 응답 메시지 바디에 넣어주는 것이다. 그래서 HttpMessageConverter 인터페이스를 확인해보면 스펙에 canRead(), canWrite(), read(), write()가 있는 것을 확인할 수 있다. 1 2 3 4 5 6 7 8 9 10..
2021.04.08 -
Spring MVC - 정적 리소스, 뷰 템플릿 경로
정적 리소스 경로 클래스패스: /src/main/resources 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다 /static /public /resources /META-INF/resources 예) /src/main/resources/static/basic/hello.html 에 리소스가 존재하는 경우, http://localhost:8080/basic/hello.html을 요청하면 된다. 뷰 템플릿 경로 뷰 템플릿 경로: /src/main/resources/templates @ResponseBody가 없으면 뷰 리졸버에 의해 뷰를 찾게 된다. 컨트롤러 메서드 리턴타입을 String으로 해서 뷰 논리 이름을 리턴하거나, ModelAndView 생성자의 인자로 뷰 논리 이름을 ..
2021.04.08 -
Spring MVC - Http 메시지 바디 요청, 응답 파싱
Http Get 메서드나 Form 미디어 타입으로 파라미터가 넘어오는 방식이 아닌, Http 메시지 바디로 요청, 응답하는 방법을 알아보자. 1. InputStream(Reader), OutputStream(Writer) 1 2 3 4 5 6 @PostMapping("/request-body-string-v2") public void requestBodyStringV2(InputStream inputStream, Writer responseWriter) throws IOException { String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("messageBody={}", messageBod..
2021.04.08 -
Spring MVC - 요청 파라미터, @RequestParam, @ModelAttribute
요청 파라미터 Http 통신에서 요청 파라미터가 넘어오는 경우가 두 가지가 있다. 1. Get 메서드로 쿼리 파라미터가 넘어오는 경우 예) www.naver.com/exp?username=yoon&age=33 2. Html의 Form태그를 통해 Http 메시지의 바디부분으로 들어오는 경우 쿼리 파라미터와 양식이 같다. 다만 URI뒤에 붙는게 아닌, http 메시지 바디에 들어가게 된다. 요청 파라미터 조회 HttpServletRequest 서블릿처럼 HttpServletRequest를 인자로 받아 request.getParameter()를 이용해 파라미터를 조회할 수 있다. @RequestParam HttpServletRequest를 사용하지 않고 파라미터를 조회할 수 있다. 예) @RequestPara..
2021.04.07 -
Spring MVC - 컨트롤러 파라미터 타입 종류, 리턴 타입 종류 매뉴얼
컨트롤러에 어떤 종류의 파라미터를 받을 수 있고, 어떤 종류의 리턴타입을 사용할 수 있는지 정리된 매뉴얼. 컨트롤러 파라미터 타입 매뉴얼 docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-arguments Web on Servlet Stack Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source mod..
2021.04.07