MVC 패턴에서 View는 사용자가 직접 URL을 요청해서 접근하는 것이 아니라 Controller를 사용해 Controller가 띄워주게 해야한다.
WEB-INF/index.jsp로 요청했을 때 index.jsp가 나오면 안된다는 뜻
WEB-INF 폴더 내로 View 파일을 옮겨주면 외부에서 접근이 불가능하게 된다.
IndexController.java
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
ModelAndView mv = new ModelAndView();
mv.addObject("data","Hello Spring MVC");
mv.setViewName("/WEB-INF/view/index.jsp"); // 옮긴 위치로 변경해줌
return mv;
}
IndexController.java
mv.setViewName("WEB-INF/view/index.jsp"); // /를 제거해도 작동이된다.
dispatcher-servlet.xml
<bean id="/aa/index" class="com.kim.web.controller.IndexController">
<!-- collaborators and configuration for this bean go here -->
</bean>
xml 파일도 바꿔본다.
View 이름의 /
를 빼버리면 상대경로가 되면서
/aa/index
에서 index
와 대응되어
/aa/WEB-INF/view/index.jsp
로 인식이 되버린다.
따라서 /
를 붙혀 절대 경로를 사용하는 게 편리하다.
현 Project 우클릭 - Properties - Web Project Settings
Context root 이름을 /
로 설정한다.
이제 /index
로 요청해도 홈페이지가 열린다