如下API中哪个是不是SpringMVC中的核心组件(C)
A、DispatcherServlet
B、HandlerMapping
C、Filter
D、Controller
Controller是Spring MVC中的核心组件之一,Controller负责处理客户端发送的请求,并根据请求的参数、路径等信息来决定如何进行处理和响应。
在Spring MVC中的核心组件及其作用:
DispatcherServlet:DispatcherServlet是整个Spring MVC框架的核心,负责接收客户端请求并将其分发到相应的处理程序(Controller)进行处理。它充当了前端控制器的角色,并协调其他组件的工作。
HandlerMapping:HandlerMapping负责将接收到的请求映射到相应的处理程序(Controller),确定哪个请求应该由哪个Controller来处理。Spring MVC提供了多个HandlerMapping实现类,例如注解驱动的RequestMappingHandlerMapping和基于XML配置的BeanNameUrlHandlerMapping。
HandlerAdapter:HandlerAdapter负责将请求发送给对应的处理程序(Controller)进行处理,并处理方法参数的解析、调用和结果处理。它使得Spring MVC可以支持不同类型的处理程序(Controller)以及灵活的方法参数解析。
ViewResolver:ViewResolver负责将处理程序(Controller)返回的逻辑视图名解析为具体的视图对象(View),并将其返回给DispatcherServlet。视图对象负责呈现最终的页面内容给客户端。Spring MVC提供了多个ViewResolver实现类,例如InternalResourceViewResolver用于解析JSP视图、JsonViewResolver用于解析JSON视图等。
ModelAndView:ModelAndView是一个持有模型数据和视图信息的对象。处理程序(Controller)可以通过ModelAndView将处理结果数据传递给视图进行呈现。
HandlerInterceptor:HandlerInterceptor是一个拦截器接口,允许在请求处理过程中进行预处理和后处理操作。它可以用于实现日志记录、权限验证、请求参数修改等功能。
Spring MVC的处理流程?
1、客户端发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求后,调用处理器映射器HandlerMapping
3、HandlerMapping根据请求URL找到具体的Controller。
4、由具体的处理器适配器(HandlerAdapter)对Handler进行具体的调用。
5、Controller处理请求,并返回ModelAndView,其中的View只是视图名,并不指向具体的视图组件
6、DispatcherServlet通过ViewReslover(视图解析器)确定负责显示数据的具体View
7、DispatcherServlet对View进行渲染视图(即将Model填充至视图组件中),并将完整的视图响应到客户端
如下哪个注解与Spring MVC无关?(D)
A@RequestMapping
B@RestController
C@RequestBody
D.@Param
@Param 注解通常用于 MyBatis 框架中,用于指定方法参数在 SQL 语句中的名称。
SpringMVC的所有常用注解:
@Controller:标记一个类作为 Spring MVC 的控制器。
@RequestMapping:将请求 URL 映射到一个处理方法或控制器类中。
@GetMapping:将 HTTP GET 请求映射到处理方法或控制器类中,并限定请求 URL。
@PostMapping:将 HTTP POST 请求映射到处理方法或控制器类中,并限定请求 URL。
@PutMapping:将 HTTP PUT 请求映射到处理方法或控制器类中,并限定请求 URL。
@DeleteMapping:将 HTTP DELETE 请求映射到处理方法或控制器类中,并限定请求 URL。
@PathVariable:从 URL 中提取变量值作为方法参数。
@RequestParam:从请求参数中提取值作为方法参数。
@RequestBody:将请求体中的数据绑定到一个对象上。
@ResponseBody:将返回值序列化成 JSON 或 XML 格式并写回响应体中。
@ModelAttribute:将请求参数绑定到模型对象上。
@Validated:执行 Bean Validation(JSR-303)校验。
@ExceptionHandler:捕获处理方法中抛出的指定类型的异常,并进行特定的处理。
@ResponseStatus:设置响应状态码和原因短语。
@SessionAttributes:将模型属性存储到 session 中,以便多个请求之间共享数据。
@InitBinder:用于注册自定义的属性编辑器、表单atters 等。