最近看组内一个哥们写了一个HandlerAdapter,能自动获取Http请求里面的Cookie并组装成一个Model来直接使用。觉得很牛逼。因此自己做了一个,特来分享。
原理:
利用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter。
在DispatcherServlet里面定义了:
private List<HandlerAdapter> handlerAdapters;
用于Servlet初始化的时候查找配置了的HandlerAdapter。再在Servlet请求到来之时通过调用doService层层调用
protected HandlerAdapter getHandlerAdapter(Object handler) throws ServletException {
for (HandlerAdapter ha : this.handlerAdapters) {
if (logger.isTraceEnabled()) {
logger.trace("Testing handler adapter [" + ha + "]");
}
if (ha.supports(handler)) {
return ha;
}
}
throw new ServletException("No adapter for handler [" + handler +
"]: Does your handler implement a supported interface like Controller?");
}
让它们去处理Handler。此处贴上一种实现代码:
Demo.java: