-
[SPRING] 03SEP21_View ResolverSPRING 2021. 9. 3. 19:57
View Resolver 활용하기
02SEP21 까지 스프링 설정파일인 presentation-layer.xml에 HandlerMapping에 HandlerMapping, Conroller 클래스들을 Bean으로 등록하여 Spring 컨테이너가 객체를 생성하도록 했따.
이제 View Resolver를 적용할 것이다.
View Resolver를 이용하면 클라이언트로부터 직접적인 jsp와 같은 View 호출을 차단할 수 있다.
여러가지 기능이 있지만 JSP를 View로 사용하는 경우 InternalResourceViewResolver를 사용한다.
presentation-layer.xml
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/board/"></property> <property name="suffix" value=".jsp"></property> </bean>
vuewResikver 를 등록하면 WEB-INF 폴더는 절대 브라우저에서 접근할 수 없다. 하지만 InternalResourceViewResolver 를 위와같이 설정하면 JSP파일을 View 화면으로 사용할 수 있다. (단 컨트롤러의 Redirect 요청이 있을 때만 가능하다.)
따라서 컨트롤러도 수정한다.
LoginController.java
package com.springbook.view.user; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import com.springbook.biz.user.UserVO; import com.springbook.biz.user.impl.UserDAO; public class LoginController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("run LoginController"); String id = request.getParameter("id"); String password = request.getParameter("password"); UserVO vo = new UserVO(); vo.setId(id); vo.setPassword(password); UserDAO userDAO = new UserDAO(); UserVO user = userDAO.getUser(vo); ModelAndView mav = new ModelAndView(); if(user != null) { mav.setViewName("redirect:getBoardList.do"); }else { mav.setViewName("redirect:login.jsp"); } return mav; } }
viewName에 각 redirec:를 붙여준다.
이렇게 하면 외부롱부터 직접적인 뷰 호출은 막고, 오직 컨트롤러의 요청에 의해서 뷰 호출을 할 수 있다.
public class DeleteBoardController implements Controller { ... ModelAndView mav = new ModelAndView(); mav.setViewName("redirect:getBoardList.do"); return mav; }
public class GetBoardController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { ... ModelAndView mav = new ModelAndView(); mav.addObject("board", board); mav.setViewName("getBoard"); return mav; } }
728x90'SPRING' 카테고리의 다른 글
[SPRING]09SEP21 (0) 2021.09.09 [SPRING] 03SEP21_2 / @annotation (0) 2021.09.03 [SPRING]MVC 프레임워크(01SEP21 ) (0) 2021.09.02 [SPRING] DB 사용을 위한 환경설정과 JDBC Template(service와 serviceImpl) (0) 2021.08.26 [SPRING] pointcut 표현식 (0) 2021.08.25