작성
·
230
1
public class ControllerV2HandlerAdapter implements MyHandlerAdapter {
@Override
public boolean supports(Object handler) {
return (handler instanceof ControllerV2);
}
@Override
public ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
ControllerV2 controller = (ControllerV2) handler;
MyView view = controller.process(request, response);
String viewPath = view.getViewPath();
// 모델뷰 만들기
String viewName = parsingViewName(viewPath);
ModelView mv = new ModelView(viewName);
// 모델뷰에 모델 넣기
Map<String, Object> model = new HashMap<>();
request.getAttributeNames().asIterator()
.forEachRemaining(attributeName -> model.put(attributeName, request.getAttribute(attributeName)));
mv.setModel(model);
return mv;
}
private String parsingViewName(String viewPath) {
String[] splitList = viewPath.split("/");
int lastIndex = splitList.length - 1;
String viewNameWithJSP = splitList[lastIndex];
String[] splitJSP = viewNameWithJSP.split("[.]");
String viewName = splitJSP[0];
return viewName;
}
답변 1
1
안녕하세요. 이신광님
이렇게 고민해보는 것이 좋네요.
실제 이렇게 구현하려면 사실 많은 것을 고민해야 합니다. 저는 이렇게 시도한 것 자체가 중요하다 생각합니다.
어댑터는 양쪽을 다 맞추어주어야 하기 때문에 사실 지저분한게 당연합니다. ㅎㅎ
그리고 1. Adapter를 수정한다. 2. 그래도 전체 디자인이 좋지 않으면 FrontController를 수정한다 순서가 맞을 것 같아요.
감사합니다.
답글 감사합니다 ㅎㅎ