Controller 의 장점
⬇️ Servlet 코드
@WebServlet(urlPatterns = "/api/search")
public class ItemSearchServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
String query = request.getParameter("query");
// ...
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String itemDtoListJson = objectMapper.writeValueAsString(itemDtoList);
out.print(itemDtoListJson);
out.flush();
}
}
⬇️ Controller 코드
@Controller
public class ItemSearchController {
@GetMapping("/api/search")
@ResponseBody
public List<ItemDto> getItems(@RequestParam String query) throws IOException {
// ...
return itemDtoList;
}
}
controller에서는 servlet 중복 코드들을 스프링
이 대신해준다.
✅ @RequestParam
: String query를 정의만 해주면 이 string query안에 내부적으로는 request.getParameter
를 한 결과를 담아서 보내주겠다.
✅ itemDtoList 반환만 하면, 서블릿에서의 json으로 변환해주는 과정이랑 contentType 설정하는 과정, out.print, flush 이런 과정들을 컨트롤러 스프링에서 해줌.