ViewResolver 사용하는 이유
클라이언트 브라우저에서 JSP 파일을 직접 호출할 수 있는데, VeiwResolver를 이용하면 클라이언트에서의 직접적인 JSP 호출을 차단할 수 있다. 대부분 ViewResolver 를 필수로 사용한다.
클라이언트에서 직접 호출하는 것을 방지하는 이유로는 로그인을 해야만 볼 수 있는 페이지가 있을 텐데, 해당 페이지에 직접 들어올 수도 있기 때문이다.
ViewResolver 적용
1) /WEB-INF/ 폴더는 브라우저에서 접근할 수 없다. 따라서 /WEB-INF/ 밑에 폴더를 생성하여 폴더 밑으로 JSP 파일을 옮긴다.
/WEB-INF/board/getboard.jsp
/WEB-INF/board/getboardList.jsp
2) xml 설정 파일에 ViewResolver 등록
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/board/" />
<property name="suffix" value=".jsp" />
</bean>
위와 같이 설정하면 스프링 컨테이너가 WEB-INF 폴더에 있는 JSP 파일을 View 화면으로 사용할 수 있어, 클라이언트의 직접적인 JSP 호출을 차단할 수 있다. 예시로 접두사는 '/WEB-INF/board' , 접미사는 '.jsp' 로 붙여서 파일을 실행한다.
3) 컨트롤러 수정
스프링 컨테이너가 접두사와 접미사를 붙여 파일을 호출하기 때문에 "getBoardList" 만 적으면 "/WEB-INF/board/getBoardList.jsp" 와 같다. getBoardList.jsp 로 적으면 /WEB-INF/board/getBoardList.jsp.jsp 가 될 것이다.
ModelAndView mav = new ModelAndView();
mav.addObject("boardList", boardList);
mav.setViewName("getBoardList");
View 이름 앞에 'forward:' 나 'redirect:'를 붙이면 ViewResolver를 무시한다. 아래와 같이 작성하면 접미사와 접두사가 붙지 않고 그 자체를 호출하게 된다.
mav.setViewName("forward:getBoardList.do");
mav.setViewName("redirect:login.jsp");
'IT > Spring' 카테고리의 다른 글
포워드(Forward)와 리다이렉트(Redirect) 차이 (0) | 2022.05.26 |
---|---|
Java Framework - Spring(4) : MVC 모델 (0) | 2022.05.19 |
Java Framework - Spring(3) : JDBC (0) | 2022.05.18 |
Java Framework - Spring (2) : DI / AOP (0) | 2022.05.18 |
Java Framework - Spring (1) : 컨테이너 / IoC (0) | 2022.05.16 |
댓글