메시지 컨버터는 XML이나 JSON을 이용한 AJAX 기능이나 Web Service를 개발할 때 사용할 수 있습니다. HTTP요청 프로터피를 모델 오브젝트의 프로터피에 개별적으로 바인딩 하고 모델 오브젝트를 다시 뷰를 이용해 클라이언트로 보낼 콘텐츠를 만드는 대신 HTTP요청에 메시지 본문과 HTTP 응답 메시지 본문을 통째로 메시지로 다루는 방식입니다. 메시지 컨버터는 파라미터의 @RequestBody와 메소드에 부여한 @ResponseBody를 이용합니다. | 메시지 컨버터의 종류 사용할 메시지 컨버터는 AnnotationMethodHandlerAdapter를 통해 등록합니다. 1. ByteArrayHttpMessageConveter - 지원하는 오브젝트 타입 : byte[] - @RequestBod..
지난번에 @RequestParam으로 값을 많이 바인딩 시키면 코드가 지저분해지는 경우가 있을텐데 이번에는 커맨드객체를 활용하여 코드 가독성을 조금 더 높여보도록한다 ! 웹 프로젝트 개발 시 "인쇄하기"라는 기능이 있어서 다른 view.jsp 에서 값을 컨트롤러를 타야 하는 경우가 있었는데 이럴때 model에 값을 엄청 많이 binding 시켜줬던 기억이있다. 이제는 Command 객체를 활용하여 이러한 경우를 대비해 볼 것이다. ! 회사에서 작성했던 코드 @GetMapping("/print") public void testMethod(@Request Param . . . (수만은 RequestParam이 적히고) ){ model.addattrubute("사용할 data들 ", ... ); model.a..
컨트롤라에서 Requestparam으로 파라미터 값을 넘겨받을 때 아무 생각 없이 사용하곤 했는데, 이번 기회에 이 어노테이션에 대해 정리해 보고자 한다. 스프링에서는 컨트롤러로 사용할 클래스 상단에 @Controller를 지정합니다. 주로 사용하는 형태의 파라메터를 전달하는 경우입니다. Case 1 ) http://xxx.x.x?index=1&page=2 Case 2 ) http://xxxx.x.x/index/1 Case 1의 경우 파라미터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 사용할 때 많이 사용합니다. Case 2의 경우 Rest api에서 값을 호출할 때 주로 많이 사용합니다. Spring에서는 이러한 전달인자를 처리하는데 두 가지 방법을..
ResponseEntity를 배우기 전에 먼저 Controller와 RestController의 차이점을 알고 가보겠습니다. | Spring MVC Controller와 Restful Web Service Controller의 차이점 -가장 큰 차이점은 HTTP Response Body가 생성되는 방식입니다. | 기존 MVC Controller view 기술을 사용 주로 view(화면)을 return 합니다. | Restful 웹 서비스 Controller 객체를 반환하기만 하면 객체 데이터는 JSON/XML 형식의 HTTP 응답을 직접 작성합니다. Data를 return하는 것이 주 용도입니다. 대표적인 Controller 입니다. import org.springframework.stereotype.C..
공부를 하면서 객체를 주입 받을때 주입 받는 방법은 총 3가지 방법이 존재한다. 나는 @Autowired 를 이용하여 필드에 붙이는 방식이 편하여 그동안 이렇게 주입했었는데 이 방법은 좋지 못한 방법이라는 글을 보았다. 그래서 정리하고자 한다. | 생성자 주입(Constructor Injection) 단일 생성자인 경우에는 @Autowired 어노테이션 조차 붙이지 않아도 되지만 생성자가 2개 이상인 경우에는 생성자에 어노테이션을 붙여주어야 한다. 예를들어 단일 생성자 같은 경우 @Component public class MadExample { // final로 선언할 수 있는 보너스 private final HelloService helloService; // 단일 생성자인 경우는 추가적인 어노테이션이..
| IntStream - Java8에서는 반복분 ex)while,do-while,for 등을 간결하게 처리할 수 있는 방법을 제공합니다. - 무조건 IntStream이 좋은 것이 아니고, 그때그때 상황에 따라 적절한 반복문을 쓰는 것이 필요합니다. - 하지만 IntStream을 잘 쓰면 코드가 깔끔해져서 좋습니다. - Stream은 당연히 IntStream 말고도 여러 종류의 Stream이 있습니다. 먼저 간단한 예시를 보여드리겠습니다. for문 public void _loop() { for (int i = 1 ; i { //수정 if (i >= 5) { return; } System.out.println(i); }); } //결과 1 2 3 4 수정된 코드는 결과 값은 5입니다. 하지만 위 코드는 fo..
| UriComponentsBuilder 웹페이지에서 매번 파라미터를 유지하는 일이 번거롭고 힘들다면 한 번쯤 " UriCompoentsBuilder "라는 클래스를 이용하여 작성해보자 ! org.spring.framework.web.util.UriComponentsBuilder는 여러 개의 파라미터들을 연결하여 URL 형태로 만들어 주는 기능을 가지고 있습니다. 즉 Controller단에서 addAttribute로 하나 하나 속성을 지정해주지 않아도 이 class를 이용하면 손쉽고 간단하게 파라미터들을 전달할 수 있습니다. (컨트롤러에서 리다이렉트 시 여러 파라미터들을 일일이 다 addAttribute를 하기엔 버거웠습니다.) (이방법은 한글 처리에 신경쓰지 않아도 된다는 점이 유용합니다.) 예를들어 ..
addAttribute와 addFlashAttribute의 차이점 addAttribute는 삭제를 했을 때 url 을 보자. redirect는 list까지다. 근데 page , perPageNum, searchType, keyword 가 뒤에 따라 붙었다. rttr.addAttribute 때문에 붙은 것이다. | rttr.addAttribute - 전달한 값은 url뒤에 붙으며, 리프레시해도 데이터가 유지된다. | rttr.addFlashAttribute -전달한 값은 url뒤에 붙지 않는다. 일회성이라 리프레시할 경우 데이터가 소멸한다. 또한 2개이상 쓸 경우, 데이터는 소멸한다. 따라서 맵을 이용하여 한번에 값전달해야한다.