View 파일 저장 위치

Codren·2021년 8월 7일
0

Section 1. View 파일 저장 위치

1. web.xml

<url-pattern>/</url-pattern>
  • localhost:8080/webprj/index.jsp 요청 시 View 파일에 직접 접근 가능




2. View 파일 저장 위치

  • 사용자가 직접 View 파일에 접근할 수 없도록 Tomcat Spring 만 접근 가능한 디렉토리로 옮김 (숨김)
  • webapp 폴더 -> webapp/WEB-INF/view 폴더 생성 후 저장
http://localhost:8080/webprj/WEB-INF/view/index  -> 사용자가 직접 요청 시 오류




3. View 파일 절대경로

  • Controller setViewName 절대경로 지정
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 파일 상대경로

  • Controller setViewName 상대경로 지정
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;
	}
}
  • "/" 로 시작하지 않고 경로를 지정하면 해당 컨트롤러를 매핑하는 id = /index 에서 index와 같은 위치에 있다고 판단하여 localhost:8080/webprj/WEB-INF/view/index.jsp 로 접근




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

  • http://localhost:8080/webprj/index 에서 프로젝트 명 webprj 가 경로로 지정됨
  • 개발 단계에서 여러 프로젝트가 존재할 때 접근할 context 를 지정
  • 하지만 webprj 프로젝트가 메인이고 다른 context 가 존재하지 않으므로 제거함
  • properties -> Web Project Settings 에서 Context root 를 '/' 지정

  • 결과




7. 프로젝트 root

  • Eclipse Maven Spring 기반 웹 프로젝트의 기본 홈 디렉토리는 webapp

0개의 댓글