1. web.xml
<url-pattern>/</url-pattern>
2. View 파일 저장 위치
http://localhost:8080/webprj/WEB-INF/view/index -> 사용자가 직접 요청 시 오류
3. View 파일 절대경로
public class IndexController implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("data","hello Spring MVC");
mv.setViewName("/WEB-INF/view/index.jsp");
return mv;
}
}
4. View 파일 상대경로
public class IndexController implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("data","hello Spring MVC");
mv.setViewName("WEB-INF/view/index.jsp");
return mv;
}
}
5. url 매핑과 상대경로
만약 아래와 같이 url 매핑을 /aa/index 로 지정하면 aa란 폴더가 있다는 것이 아니라 그냥 /aa/index 라는 url 요청이 왔을 때 해당 컨트롤러를 실행하라는 의미이지만
mv.setViewName("WEB-INF/view/index.jsp");를 통해
포워딩될때 상대경로가 적용되어 /aa/WEB-INF/view/index.jsp 를 찾게되어 오류 발생
6. context root
properties -> Web Project Settings 에서 Context root 를 '/' 지정
결과
7. 프로젝트 root