아래와 같은 컨트롤러 클래스가 있을 경우 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와 같이 변경되어 나타날 것이다.

+ Recent posts