-
view resolver스프링/스프링 MVC 패턴 2023. 2. 12. 15:14
회원가입, 회원저장, 회원 목록 웹 사이트를 구축할 때
hocalhost:8080 뒤에
회원가입
WEB-INF/view/new-form.jsp
회원저장
WEB-INF/view/save-result
회원목록
WEB-INF/view/members
라는 url을 설정한다고 예를 들어보자.
WEB-INF/view는 겹치는 것이기 때문에 웹 페이지를 만들때마다 입력해주는 것은 효율적이지 않다.
코드의 가독성도 떨어질 뿐만 아니라 반복작업이기에 지양해야한다.
@Component("/springmvc/old-controller") // 스프링 빈의 이름 public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldController.handleRequest"); return new ModelAndView("new-form"); } }
http://localhost:8080/springmvc/old-controller로 들어가게 된다면 ModelAndView를 통해서 new-form으로 jsp 파일을 return 하게 된다.
new-form.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!-- 상대경로 사용, [현재 URL이 속한 계층 경로 + /save] --> <form action="save" method="post"> username: <input type="text" name="username" /> age: <input type="text" name="age" /> <button type="submit">전송</button> </form> </body> </html>
이러면 저 웹 사이트에 연결은 되겠지만 오류 페이지가 뜰 것이다. 왜냐하면 페이지를 구축하지 않았기 때문이다.
return에 "new-form"이 아니라 "/WEB-INF/views/new-form.jsp"를 입력해야 할 것이다.
하지만 이러한 형식은 위에서 말한 이유로 적절하지 않다.
view resolver
intellij의 application.properties에
spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
위와 같은 코드를 추가하면 view resolver를 사용할 수 있다.
ModelView("new-form")을 입력해도 /WEB-INF/views/new-form.jsp 파일이 정상적으로 반환된다는 것이다.
아직은 new-from 하나지만 save-result, members와 여러 jsp파일을 넘겨야할 경우에는 view resolver를 사용하는 것이 훨씬 효율적이다.
'스프링 > 스프링 MVC 패턴' 카테고리의 다른 글
로그 출력 (0) 2023.02.13 스프링 MVC (0) 2023.02.12 핸들러 어댑터 (0) 2023.02.12 프론트 컨트롤러 패턴 (0) 2023.02.10 MVC 패턴 (0) 2023.02.10