UrlFilenameViewController 와 같은 기능을 직접 처리
url 경로가 조금씩 틀려서 문제가 생길때 처리하기 위해 만든 Controller
Spring은 Controller에서 View에 대한 위치값을 지정하게 처리 되므로 Controller에다가 uri값을 비교해서 분기 시킨다.
Struts는 한 Controller에서 보여줄 View값을 xml에서 세팅할 수 있다.
contextPath에 대한 확장성을 두기 위해 uri.equals 대신에 uri.indexOf 를 사용했고..
int begin = uri.indexOf('/', 1); 1로 두어서 제일 첫 부분의 contextPath는 제외되게끔 처리하였다.
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class UrlController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
String fileName = "";
String uri = request.getRequestURI();
if(uri.indexOf("/sssss/zzzz.do") > -1) {
fileName = "/sssss/xxxx/zzzz";
} else {
fileName = etcUrl(uri);
}
return new ModelAndView(fileName);
}
public String etcUrl(String uri) {
String fileName;
int begin = uri.indexOf('/', 1);
if (begin == -1) {
begin = 0;
} else {
begin++;
}
int end;
if (uri.indexOf(";") != -1) {
end = uri.indexOf(";");
} else if (uri.indexOf("?") != -1) {
end = uri.indexOf("?");
} else {
end = uri.length();
}
fileName = uri.substring(begin, end);
if (fileName.indexOf(".") != -1) {
fileName = fileName.substring(0, fileName.lastIndexOf("."));
}
return fileName;
}
}