"Spring MVC 提供了一个 DispatcherServlet 作为前端控制器来分配请求。通过策略接口,Spring 框架是高度可配置的。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。Spring MVC 框架主要由 DispatcherServlet、处理器映射器、处理器适配器、处理器(控制器)、视图解析器、视图组成。\n\nSpring MVC 相关接口解释:\n(1)DispatcherServlet\n前端控制器,所有的请求都有经过它来统一分发,请求会被分发给对应的 Handler。\n(2)HandlerMapping(处理器映射器)\n解析请求链接,然后根据请求链接找到执行这个请求的类(HandlerMapping 所说的 handler)。\n(3)HandlerAdapter(处理器适配器)\n调用具体的方法对用户发来的请求来进行处理。\n(4)Controller\nController 将处理用户请求,Controller 处理完用户请求,则返回 ModelAndView 对象给 DispatcherServlet 前端控制器。从宏观角度考虑,DispatcherServlet 是整个 Web 应用的控制器;从微观考虑,Controller 是单个 Http 请求处理过程中的控制器。\n(5)ViewResolver(视图解析器)\n解析 MdoelAndView,将 MdoelAndView 中的逻辑视图名变为一个真正的 View 对象,并将 MdoelAndView 中的 Model 取出。\n\nSpringMvc常用注解\n@Controller\n注解一个类表示控制器,Spring MVC 会自动扫描标注了这个注解的类。\n@RequestMapping\n请求路径映射,可以标注类,也可以标注方法,可以指定请求类型(post、get、put、delete、patch...)默认不指定为全部接收。\n@RequestParam\n用于数据绑定,接收url中的参数,并且前后端参数名称必须相同。\n@RequestBody\n用于数据绑定,接收body体中的参数,而不是url。所以请求一定是post。\n@ResponseBody\n放在方法上,表示此方法返回的数据放在body体中,而不是跳转页面。一般用于ajax请求,返回json数据。\n@RestController\n这个是@Controller和@ResponseBody的注解组合。\n@PathVariable\n路径绑定变量,用于绑定路径中 "{a}" 的变量。\n@RequestHeader\n放在参数前,用来获取request header中的参数。\n@CoookieValue\n放在方法参数前,用来获取request header cookie中的参数值。\n@GetMapping,@PostMapping,@DeleteMapping\nSpring4.3之后加入的注解,来表示指定的请求方式内容:Spring MVC 提供了一个 DispatcherServlet 作为前端控制器来分发请求。通过策略接口,Spring 框架可以高度配置。Spring MVC 将控制器、模型对象、分派器和处理程序对象分离,这种分离使它们更容易进行定制。Spring MVC 框架主要由 DispatcherServlet、处理器映射器、处理器适配器、处理器(控制器)和视图解析器组成。\n\nSpring MVC 相关接口解释:\n(1)DispatcherServlet:前端控制器,所有请求都经过它来统一分发,请求将分发给对应的处理器。\n(2)HandlerMapping(处理器映射器):解析请求链接,找到执行该请求的处理器类(HandlerMapping 所指的处理器)。\n(3)HandlerAdapter(处理器适配器):调用具体的方法来处理用户发送的请求。\n(4)Controller:Controller 处理用户请求,处理完后将 ModelAndView 对象返回给 DispatcherServlet 前端控制器。从宏观角度来看,DispatcherServlet 是整个 Web 应用的控制器;从微观角度来看,Controller 是单个 HTTP 请求处理过程中的控制器。\n(5)ViewResolver(视图解析器):解析 ModelAndView,将逻辑视图名转换为真正的 View 对象,并获取 ModelAndView 中的 Model。\n\nSpring MVC 常用注解:\n@Controller:用于注解一个类表示控制器,Spring MVC 会自动扫描标注了该注解的类。\n@RequestMapping:用于映射请求路径,可以标注在类或方法上,可以指定请求类型(POST、GET、PUT、DELETE、PATCH...),默认为全部接收。\n@RequestParam:用于数据绑定,接收 URL 中的参数,前后端参数名称必须相同。\n@RequestBody:用于数据绑定,接收请求体中的参数,而不是 URL。因此,请求方法必须是 POST。\n@ResponseBody:放在方法上,表示该方法返回的数据放在响应体中,而不是跳转页面。通常用于 AJAX 请求,返回 JSON 数据。\n@RestController:@Controller 和 @ResponseBody 的注解组合。\n@PathVariable:路径绑定变量,用于绑定路径中的 "{a}" 变量。\n@RequestHeader:放在参数前,用于获取请求头中的参数。\n@CookieValue:放在方法参数前,用于获取请求头 Cookie 中的参数值。\n@GetMapping、@PostMapping、@DeleteMapping:在 Spring 4.3 之后引入的注解,用于表示指定的请求方式。

Spring MVC 架构详解:从前端控制器到视图解析器

原文地址: http://www.cveoy.top/t/topic/pMj0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录