DispatcherServlet
-
RequestContextUtilscan get WebApplicationContext - HandlerMapping HandlerMapping是把一个URL指定到一个Controller上
- HandlerAdapter HandlerAdapter是促进DispatcherServlet和第三方框架简单集成的系统级接口。除非使用第三方框架,否则该接口及其实现一般就会对开发者隐藏。DispatcherServlet还会串连在ApplicationContext中的多个适配器,并同时根据Ordered接口对它们进行排序。
- HandlerExceptionResolver
- ViewResolver
DispatcherServlet workflow:
http://www.processon.com/view/link/55557188e4b090bd2cad57cd
Session access may not be thread-safe, in particular in a Servlet environment. Consider setting theRequestMappingHandlerAdapter's "synchronizeOnSession" flag to "true" if multiple requests are allowed to access a session concurrently.
Supported method return types
The following are the supported return types:
- A
ModelAndViewobject, with the model implicitly enriched with command objects and the results of@ModelAttributeannotated reference data accessor methods. - A
Modelobject, with the view name implicitly determined through aRequestToViewNameTranslatorand the model implicitly enriched with command objects and the results of@ModelAttributeannotated reference data accessor methods. - A
Mapobject for exposing a model, with the view name implicitly determined through aRequestToViewNameTranslatorand the model implicitly enriched with command objects and the results of@ModelAttributeannotated reference data accessor methods. - A
Viewobject, with the model implicitly determined through command objects and@ModelAttributeannotated reference data accessor methods. The handler method may also programmatically enrich the model by declaring aModelargument (see above). - A
Stringvalue that is interpreted as the logical view name, with the model implicitly determined through command objects and@ModelAttributeannotated reference data accessor methods. The handler method may also programmatically enrich the model by declaring aModelargument (see above). -
voidif the method handles the response itself (by writing the response content directly, declaring an argument of typeServletResponse/HttpServletResponsefor that purpose) or if the view name is supposed to be implicitly determined through aRequestToViewNameTranslator(not declaring a response argument in the handler method signature). - If the method is annotated with
@ResponseBody, the return type is written to the response HTTP body. The return value will be converted to the declared method argument type usingHttpMessageConverters. See the section called “Mapping the response body with the @ResponseBody annotation”. - An
HttpEntity<?>orResponseEntity<?>object to provide access to the Servlet response HTTP headers and contents. The entity body will be converted to the response stream usingHttpMessageConverters. See the section called “Using HttpEntity”. - An
HttpHeadersobject to return a response with no body. - A
Callable<?>can be returned when the application wants to produce the return value asynchronously in a thread managed by Spring MVC. - A
DeferredResult<?>can be returned when the application wants to produce the return value from a thread of its own choosing. - A
ListenableFuture<?>can be returned when the application wants to produce the return value from a thread of its own choosing. - Any other return type is considered to be a single model attribute to be exposed to the view, using the attribute name specified through
@ModelAttributeat the method level (or the default attribute name based on the return type class name). The model is implicitly enriched with command objects and the results of@ModelAttributeannotated reference data accessor methods.
@ModelAttribute
The @ModelAttribute annotation can be used on methods or on method arguments
An @ModelAttribute on a method indicates the purpose of that method is to add one or more model attributes. Such methods support the same argument types as@RequestMapping methods but cannot be mapped directly to requests. Instead @ModelAttribute methods in a controller are invoked before @RequestMappingmethods, within the same controller.
In the first, the method adds an attribute implicitly by returning it. In the second, the method accepts a Model and adds any number of model attributes to it. You can choose between the two styles depending on your needs.
Support for the Last-Modified Response Header To Facilitate Content Caching
There are two key elements to note: calling request.checkNotModified(lastModified) and returning null. The former sets the response status to 304 before it returns true. The latter, in combination with the former, causes Spring MVC to do no further processing of the request.
本文介绍了 Spring MVC 的核心组件及其工作流程,包括 DispatcherServlet、HandlerMapping、HandlerAdapter 等,并详细阐述了支持的方法返回类型及 @ModelAttribute 注解的用法。
2206

被折叠的 条评论
为什么被折叠?



