SPRING
[SPRING] 03SEP21_View Resolver
worri-pi
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