우리 팀엔 웹 디자이너가 있어서, 간단한 설명 페이지들은 디자이너가 직접 작업한다. 그런데 이 설명 페이지들의 양이 만만치 않다.. 거의 리포트 수준으로 많고, 잦은 빈도로 새로 추가해야 한다. 그런데 지금까지는 html 페이지로 디자이너분이 직접 작업해 왔는데, Spring 으로 전환할 경우 html 페이지로 추가하더라도 Controller를 빌드해야 하는 문제가 생겼다. 물론 html로만 작업하면 문제가 없지만, 이번에 추가된 로그인 기능도 있고 헤더/푸터를 불러와야 하는 문제도 있고.... 여러가지 사정 상, 모든 html이 jsp로 변경되어야 했기 때문이다.
그런데 jsp를 추가하려면 controller를 추가해야하고.. 그러려면 또 빌드를 해야 하고... 새로 페이지가 추가될 때마다 빌드를 하자니 그 빈도가 너무 많고.. 고민하다가, 컨트롤러 없이 뷰로 바로 보내는 법은 없는 지 검색해보았다.
일단.. 아래와 같은 방법이 있었다.
1. Java config
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry)
{
registry.addViewController("/login").setViewName("login");
}
}
2. xml Config
<mvc:view-controller path="/index" view-name="index" />
근데 문제는, 둘 다 페이지가 추가될 때마다 개별 페이지명을 계속 입력해야 한다는 데에 있었다. 그래서 고민하다가.. 아래와 같이 개발했다.
/* 단일페이지들은 컨트롤러 별도 생성 없이 페이지명이 있으면 바로 넘긴다 */
@RequestMapping(value="/custom/{pageName}")
public String getSinglePage(@PathVariable("pageName")String pageName){
return "/custom/"+pageName;
}
이 방법은... 그러니까.... pageName 을 파라미터로 받아서, 바로 그 페이지를 찾아서 리턴하는 로직이다. 이렇게 하면 디자이너는 앞으로 작업하는 jsp를 custom 폴더 하위에 넣기만 하면 된다. 그리고 페이지명을 입력하면 custom 폴더 아래로 잘 찾아간다. 빌드 없이..! 그런데 이렇게 해도 되는걸까?-_-; 너무 오용하고 있는 것 같은 생각이 ...