营销型网站重要特点是?,所见即所得的网站开发软件,虚拟主机建设网站绑定域名,用wordpress制作软件1. DispatcherServlet
springmvc的核心控制器#xff0c;负责截获所有的请求#xff0c;当截获请求后委托给HandlerMapping进行请求映射的解析工作#xff0c;目的是找到哪一个Controller的方法可以处理该请求#xff0c;找到后再交由给HandlerAdaptor去负责调用并返回Mod…
1. DispatcherServlet
springmvc的核心控制器负责截获所有的请求当截获请求后委托给HandlerMapping进行请求映射的解析工作目的是找到哪一个Controller的方法可以处理该请求找到后再交由给HandlerAdaptor去负责调用并返回ModelAndView对象然后将ModelAndView对象交给相应的视图解析器ViewResolver解析成对应的视图View对象最后由这个视图对象响应客户端。
2. HandlerMapping和HandlerAdapter
当xml配置了mvc:annotation-driven/或者配置类中配置了EnableWebMvc注解时spring会自动装配RequestMappingHandlerMapping请求映射处理器RequestMappingHandlerAdapter请求处理适配器这两个类。
**RequestMappingHandlerMapping**负责解析带有ReqeustMapping注解的方法以及类信息并在请求到达时找到相应的HandlerMethod一个JavaBean封装了请求处理方法、参数信息、类信息以及IOC容器等重要的内容。当找到相应的HandlerMethod后如果程序中有定义拦截器那么就会将这个HandlerMethod封装到HandlerExecutionChain的类中这个类包含了一个拦截器的集合和一个HandlerMethod的对象。最后将这个chain返回给DispatcherServlet。DispatcherServlet从这个HandlerExecutionChain中取出HandlerMethod来匹配相应的HandlerAdapter找到合适的可以调用HandlerMathod的请求处理适配器。接着DispatcherServlet负责调用HandlerExecutionChain中的所有拦截器中的预处理方法如果预处理方法没有任何问题那么就将HandlerMethod交给HandlerAdapter去调用。
**RequestMappingHandlerAdapter**DispatcherServlet将HandlerMethod传递给HandlerAdapter由它负责调用HandlerMethod也就是目标控制器的方法。调用时还会使用具体的MethodArgumentResolver(方法参数解析器RequestMappingHandlerAdapter内部会初始化一系列默认的HandlerMethodArgumentResolver将请求中的参数解析为请求处理方法所需要的具体类型参数。最后将Controller方法返回的ModelAndView一并返回到DispatcherServlet中。接着DispatcherServlet会继续执行所有拦截器中的后置处理方法。
3. ViewResolver
springmvc内部提供了许多视图解析器用于解析不同的视图对象最长见的有InternalResourceViewResolver内部资源视图解析器、FreeMarkerViewResolver模板引擎视图解析器等。
**InternalResourceViewResolver**在DispatcherServlet接收到HandlerAdapter返回的ModelAndView之后DispatcherServlet将这个ModelAndView交给指定InternalResourceViewResolver来进行视图解析InternalResourceViewResolver会根据ModelAndView的视图名称来创建一个InternalResourceView的视图对象返回到DispatcherServlet。由DispatcherServlet去调用视图对象的渲染方法来响应视图。在渲染完视图之后DispatcherServlet会执行所有拦截器中的after方法。
4. View
视图对象是由相应的视图解析器解析出来的Spring也提供了不同的视图对象来完成不同的视图响应工作常见的有的InternalResourceView内部资源转发视图等。
**InternalResourceView**这个视图对象会将ModeAndView中而外带的数据放入请求作用域以及获取到拼接好的转发地址。并提供一个renderMergedOutputModel渲染方法由DispatcherServlet调用这个方法就是负责具体的url转发工作。