springMVC源码分析--SimpleServletHandlerAdapter
2018-01-10 16:17
567 查看
接下来我们详细介绍一下其实现类SimpleServletHandlerAdapter,SimpleServletHandlerAdapter其实是一个Servlet的适配器,其最终执行的方法是Servlet的service方法,源码如下,我们可以看到其真正起作用的地方是((Servlet) handler).service(request, response),其实也就是调用Servlet的service,其实本质还是比较简单的。
supports方法就是判断handler是否是Servlet
getLastModified直接返回-1
handle方法本质是执行Servlet.service方法。
[java] view
plain copy
print?
public class SimpleServletHandlerAdapter implements HandlerAdapter {
@Override
public boolean supports(Object handler) {
return (handler instanceof Servlet);
}
//执行Servlet的service方法
@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//本质还是执行Servlet的service方法
((Servlet) handler).service(request, response);
return null;
}
@Override
public long getLastModified(HttpServletRequest request, Object handler) {
return -1;
}
}
这样springMVC中就提供了执行Servlet的适配器,如果可以的话我们是否也可以自己写一个适配器类然后注入到springMVC 的容器中。
这样就可以在servlet类中注入spring容器中的bean了,如下所示:
supports方法就是判断handler是否是Servlet
getLastModified直接返回-1
handle方法本质是执行Servlet.service方法。
[java] view
plain copy
print?
public class SimpleServletHandlerAdapter implements HandlerAdapter {
@Override
public boolean supports(Object handler) {
return (handler instanceof Servlet);
}
//执行Servlet的service方法
@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//本质还是执行Servlet的service方法
((Servlet) handler).service(request, response);
return null;
}
@Override
public long getLastModified(HttpServletRequest request, Object handler) {
return -1;
}
}
这样springMVC中就提供了执行Servlet的适配器,如果可以的话我们是否也可以自己写一个适配器类然后注入到springMVC 的容器中。
这样就可以在servlet类中注入spring容器中的bean了,如下所示:
相关文章推荐
- springMVC源码分析--SimpleServletHandlerAdapter(二)
- springMVC源码分析--SimpleServletHandlerAdapter(二)
- springMVC源码分析--SimpleServletHandlerAdapter(二)
- springMVC源码分析--SimpleControllerHandlerAdapter(三)
- springMVC源码分析--SimpleControllerHandlerAdapter(三)
- springMVC源码分析--SimpleControllerHandlerAdapter(三)
- springMVC源码分析--SimpleUrlHandlerMapping(四)
- springMVC源码分析--HttpRequestHandlerAdapter(四)
- SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解
- springMVC源码分析--HttpRequestHandlerAdapter(四)
- 7、SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解
- springMVC源码分析--HandlerAdapter(一)
- springMVC源码分析--HttpRequestHandlerAdapter(四)
- springMVC源码分析--RequestMappingHandlerAdapter(五)
- springMVC源码分析--RequestMappingHandlerAdapter(五)
- springMVC源码分析--SimpleUrlHandlerMapping(四)
- springMVC源码分析--RequestMappingHandlerAdapter(五)
- springMVC源码分析--访问请求执行ServletInvocableHandlerMethod和InvocableHandlerMethod