우선 이건 인프런의 김영한 강사님의 강의를 들으면서 본인이 스터디하고, 복습하기 위해 작성되는 글입니당,,,
MVC 패턴에서 view의 역할에 대해 알아보고 구현해본다.
클라이언트가 요청한 값에 알맞은 화면을 rendering 해주는 역할을 담당하는 객체
public class MyView
private String viewPath;
public MyView(String Myview){
this.viewPath = viewPath;
}
public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher requestDispatcher = request.getRequestDispatcher(viewPath);
requestDispatcher.forward(request,response);
}
//요청 경로에 맞는 jsp 화면 즉 view로 넘겨주는 객체
public class MyView {
private String viewPath;
public MyView(String Myview){
this.viewPath = viewPath;
}
public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher requestDispatcher = request.getRequestDispatcher(viewPath);
requestDispatcher.forward(request,response);
}
}
MyView process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
Member member = new Member(name,age);
memberRepository.save(member);
request.setAttribute("member",member);
return new MyView("/WEB-INF/views/save-result.jsp");
중요것은 return 타입이 MyView로 되어있기 때문에 return 했을 때 myView를 생성하여 return 해준다. 그리고 해당 controller에 알맞은 jsp 경로를 파라미터로 넘긴다.
//controllerV2.process 메서드는 myview 타입을 리턴한다 따라서 Myview 객체에 넣어준다.
MyView myView = controllerV2.process(req, resp);
//myview의 render를 호출하면서 /WEB-INF/views/new-form.jsp 값을 함께 넘겨줌
myView.render(req,resp);