아래와 같은 컨트롤러 클래스가 있을 경우 return "getBoardList.do" 혹은
return "getBoardList.jsp"가 갖는 의미가 무엇인가?
@Controller
public class InsertBoardController {
@RequestMapping(value="/insertBoard.do")
public String insertBoard(BoardVO vo, BoardDAO bdDao) {
System.out.println("InsertBoardController 글 등록 처리~");
bdDao.insertBoard(vo);
return "getBoardList.do"; ①
// return "getBoardList.jsp"; ②
}
}
MVC에서 Controller는 기본적으로 Model에 대한 처리(DB로 부터 적정 정보 획득)와 이후 이동할 페이지 정보(View 정보)를
return 하는 역할이 Controller가 하는 역할이다.
따라서 return "getBoardList.do"가 갖는 의미도 Model에 대한 처리(bdDao.insertBoard(vo);)와 이후 이동할 페이지 정보
즉 View 정보를 반환하는 역할의 의미가 return "getBoardList.do";인 것이다.
따라서 Context Path가 member라고 한다면 return "getBoardList.do";의 실행은 http://localhost/member/getBoardList.do와 같은 url 형태의 request 요청이 발생하게 하는 역할이 return "getBoardList.do";의 의미이다.
return "getBoardList.jsp";의 경우는 /member/getBoardList.jsp를 막바로 호출하는 형태라고 한다면 return "getBoardList.do";의 경우는 getBoardList.do에 해당하는 특정 컨트롤러의 특정 메소드 실행후 그 특정 메소드가 지정하는 .jsp 페이지로의 이동을 의미하게 된다.
참고적으로 Controller 메소드가 return 하는 View 정보는 기본적으로 포워딩 방식으로 동작한다.
따라서 사용자의 브라우저 주소줄에
http://xxx.xxx.xx/member/insertBoard.do로 요청에 대해서
return "getBoardList.do"; 해도
사용자의 브라우저 주소줄은 http://xxx.xxx.xx/member/insertBoard.do로 변함이 없다.
만일 포워딩이 아니라 리다이렉트 방식으로 동작하게 할려면
return "redirect:getBoardList.do";와 같이 해야 한다.
그러면 사용자의 브라우저 주소줄은 http://xxx.xxx.xx/member/getBoardList.do와 같이 변경되어 나타날 것이다.
'Spring MVC' 카테고리의 다른 글
Spring의 classpath:의 경로 위치 (6) | 2020.01.02 |
---|---|
@ModelAttribute 어노테이션을 이용한 Controller에서 View로의 데이터 전달 (0) | 2019.12.26 |
ModelAndView의 setViewName() 메소드에 redirect: 사용하는 법 (0) | 2019.12.20 |
AOP around의 proceed() 메소드 동작에 대한 개념 정리 (0) | 2019.12.11 |
AOP(Aspect Oriented Programming) 용어 정리 (0) | 2019.12.10 |