ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.