-
Notifications
You must be signed in to change notification settings - Fork 181
@Controller와 @RestController
eGovFrameSupport edited this page Apr 6, 2023
·
1 revision
Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용 된다. 과정은 다음과 같다.

- Client는 URI 형식으로 웹 서비스에 요청을 보낸다.
- DispatcherServlet이 요청을 처리할 대상을 찾는다.
- HandlerAdapter을 통해 요청을 Controller로 위임한다.
- Controller는 요청을 처리한 후에 ViewName을 반환한다.
- DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 사용자에게 반환한다.
- Controller가 반환환 뷰의 이름으로부터 View를 렌더링하기 위해서는 ViewResolver가 사용되며, ViewResolver 설정에 맞게 View를 찾아 렌더링하게 된다.
- 해당 코드는 심플 홈페이지 템플릿의 메인 페이지를 조회 시 사용되는 샘플 코드이다.
@RequestMapping(value = "/cmm/main/mainPage.do")
public String getMgtMainPage(HttpServletRequest request, ModelMap model)
throws Exception{
// 공지사항 메인 컨텐츠 조회 시작 ---------------------------------
BoardVO boardVO = new BoardVO();
boardVO.setPageUnit(5);
boardVO.setPageSize(10);
boardVO.setBbsId("BBSMSTR_AAAAAAAAAAAA");
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(boardVO.getPageIndex());
paginationInfo.setRecordCountPerPage(boardVO.getPageUnit());
paginationInfo.setPageSize(boardVO.getPageSize());
boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
boardVO.setLastIndex(paginationInfo.getLastRecordIndex());
boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
Map<String, Object> map = bbsMngService.selectBoardArticles(boardVO, "BBSA02");
model.addAttribute("notiList", map.get("resultList"));
boardVO.setBbsId("BBSMSTR_BBBBBBBBBBBB");
map = bbsMngService.selectBoardArticles(boardVO, "BBSA02");
model.addAttribute("galList", map.get("resultList"));
// 공지사항 메인컨텐츠 조회 끝 -----------------------------------
return "main/EgovMainView";
}
@RestController는 @Controller에 @ResponseBody가 추가된 것으로 주 용도는 Json 형태로 객체 데이터를 반환 하는 것이다.
데이터를 응답으로 제공하는 REST API를 개발할 때 주로 사용하며 객체를 ResponseEntity로 감싸서 반환한다.

- Client는 URI 형식으로 웹 서비스에 요청을 보낸다.
- DispatcherServlet이 요청을 처리할 대상을 찾는다.
- HandlerAdapter을 통해 요청을 Controller로 위임한다.
- Controller는 요청을 처리한 후에 객체를 반환한다.
- 반환되는 객체는 Json으로 Serialize되어 사용자에게 반환된다.
- 해당 코드는 심플 홈페이지 부트 템플릿의 메인 페이지를 조회 시 사용되는 샘플 코드이다.
- 반환된 데이터는 부트 템플릿 프론트엔드 쪽에서 받아 렌더링하게 된다.
@PostMapping(value = "/cmm/main/mainPageAPI.do")
public ResultVO getMgtMainPage()
throws Exception{
ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<String, Object>();
// 공지사항 메인 컨텐츠 조회 시작 ---------------------------------
BoardVO boardVO = new BoardVO();
boardVO.setPageUnit(5);
boardVO.setPageSize(10);
boardVO.setBbsId("BBSMSTR_AAAAAAAAAAAA");
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(boardVO.getPageIndex());
paginationInfo.setRecordCountPerPage(boardVO.getPageUnit());
paginationInfo.setPageSize(boardVO.getPageSize());
boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
boardVO.setLastIndex(paginationInfo.getLastRecordIndex());
boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
Map<String, Object> map = bbsMngService.selectBoardArticles(boardVO, "BBSA02");
resultMap.put("notiList", map.get("resultList"));
boardVO.setBbsId("BBSMSTR_BBBBBBBBBBBB");
map = bbsMngService.selectBoardArticles(boardVO, "BBSA02");
resultMap.put("galList", map.get("resultList"));
resultVO.setResult(resultMap);
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
resultVO.setResultMessage(ResponseCode.SUCCESS.getMessage());
// 공지사항 메인컨텐츠 조회 끝 -----------------------------------
return resultVO;
}