목록Spring (21)
DOing

Spring에서 컨트롤러를 등록하는 방법에는 두가지가 있다. @Controller와 @RestController. @Controller는 주로 View를 반환한다. 하지만 @Controller에 @ResponseBody를 붙이면 view가 아닌 xml, json과 같은 데이터를 반환할 수 있다. (참고 : 2021.04.01 - [spring] - Controller에서 데이터 반환하기) 매번 @ResponseBody를 붙이는 것은 번거로우니 Spring 4.0부터는 @RestController를 지원하기 시작했다. @RestController @Controller + @ResponseBody Spring 4.0부터 사용가능한 어노테이션으로 @Controller에 @ResponseBody가 결합된 어노테..
Controller에서 비지니스 로직을 수행하고 처리한 데이터를 View에 넘겨 페이지에 표시한다. 이때 Controller에서 View로 데이터를 전달하는 방법에는 model(modelMap)과 modelAndView이 있다. 1. Model 데이터만 저장한다. Model은 파라미터 방식으로 넣어주고, String 형태로 View이름을 리턴한다. model.addAttribute("key","value")로 데이터 넣고 View에서 그 데이터를 사용한다. View페이지에서 ${key}이런식으로 데이터를 사용한다. @RequestMapping("/") public String toMainPage(Model model){ model.addAttribute("recentList", productService..

전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환한다. 하지만 @Controller에서 View가 아닌 데이터(JSON이나 XML)를 반환시킬 수도 있다. @Controller에서 데이터를 반환시키는 방법에는 @Responsebody와 ResponseEntity가 있다. 1. @ResponseBody : @Controller에서 JSON이나 XML같은 데이터를 반환 @ResponseBody를 사용한 메소드에서 리턴되는 값은 MessageConverter에서 변환되어 HTTP Response Body에 쓰여진다. MessageConverter에는 다양한 종류가 있는데 메소드에서 리턴되는 데이터 타입에 따라 MessageConverter가 결정된다. 1) 반환을 객체로 한..

Controller은 비지니스 로직을 처리하고 데이터를 가공한다. 이때 비지니스 로직을 처리하기위해 controller에서 데이터를 받는 방법에 대해서 알아보자. 크게 HttpServletRequest, @RequestParam, @RequestBody, @ModelAtrribute, @PathVariable이 있다. 다음 URL로 요청을 보낸다고 가정하자. http://localhost:8080/getInfo?id=3 HttpServletRequest.getParameter() 클라이언트의 요청정보를 확인하게해주는 HttpServletRequest를 이용하기 @GetMapping("/getInfo"); public void getInfo(HttpServletRequest request){ log.inf..
org.mybatis.spring.MyBatisSystemException:nested exception is org.apache.ibatis.executor.ExecutorException : No constructor found in xxx MyBatis오류이다. MyBatis가 자동적으로 객체를 생성할때는 디폴트 생성자가 존재해야한다. 디폴트 생성자를 가지고 있지않은 객체를 Mybatis가 생성하려고 할때 생기는 오류이다. 나의 경우에는 association과 collection에 해당하는 객체의 디폴트 생성자를 만들어주지않아서 에러가 발생하였다. 만약 롬복을 사용한다면 간단하게 @NoArgsConstructor만 추가해주면 해결된다.