21.过滤器和拦截器的区别?
Filter过滤器,是Servlet中的技术,可以对指定的一些行为进行拦截,例如URL级别的权限访问控制等。Interceptor拦截器是Spring MVC框架中对请求进行拦截和处理的组件,可以实现权限验证、日志记录等功能。

22.如何自定义拦截器?
在HttpServletRequest到达Controller之前,可以根据需要检查或修改,在HttpServletResponse返回之前,也可以检查或修改。通过实现HandlerInterceptor接口实现preHandle(前置)、postHandle(后置)、afterCompletion(完成后)方法,即可自定义拦截器。
23.谈谈你对SpringMVC的理解?
在了解MVC之前,先了解三层架构。三层架构就是将应用服务器进行分层,分为表现层、业务层和持久层。
- 表现层,接受网络请求,返回相应结果给前端
- 业务层,主要是用于处理业务逻辑。
- 持久层,与数据库做交互的层。
我们知道MyBatis是持久层框架,假如有一天我们使用其他的持久层框架,我们只需要改持久层的代码,上面的表现层和业务层都不需要改变。这就是分层的好处。
MVC是针对表现层水平分层的一种架构,分为:Model模型、View视图和Controller控制。
- 模型就是数据,比如界面上展示的用户信息、商品信息。
- 视图就是展现在界面的样式。
- 控制就是交互逻辑,什么时候展示登录成功,什么时候展示登录失败。
经过这样拆分之后,代码就更有条理了。
24.Spring MVC的核心组件有哪些?
Spring MVC的核心组件有DispatcherServlet、HandlerMapping、HandlerAdapter、Hander、ViewResolver、View。
25.Spring MVC的工作原理了解吗?

- 客户端发送请求到
DispatcherServlet,DispatcherServlet是中央处理器负责接受请求、分发和响应。 - DispatcherServlet调用
HandlerMapping,HandlerMapping能够根据url查询可以处理请求的Controller。 - 通过
HandlerAdapter适配器调用Handler处理请求,返回ModelAndView给DispatcherServlet。 ViewResolver根据逻辑View查询真正的View。DispatcherServlet返回Model给真正的View,View再返回给请求者。
26.HandlerMapping如何根据url查询到相应的Controller?
HandlerMapping常见的实现类是RequestMappingHandlerMapping,它是通过注解解析Controller方法的URL路径和HTTP方法。主要的注解包括:@RequestMapping、@GetMapping和@PostMapping等
- @RequestMapping:Spring MVC 的 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE
- @GetMapping:只能处理GET请求
- @PostMapping:只能处理Post请求
27.@RestController和@Controller的区别?
@RestController是一个组合注解,它结合了@Controller和@ResponseBody。适用于构建 RESTful 风格的 API,其中每个方法的返回值会直接序列化为 JSON 或 XML 数据并发送给客户端。@Controller注解标记的类则是传统的控制器类。它用于处理客户端发起的请求,并返回视图(View)作为响应。@ResponseBody注解来表示该方法的返回值要作为响应的主体内容,而不是解析为视图。
28.统一异常处理怎么做?
使用 @ControllerAdvice + @ExceptionHandler 这两个注解进行统一异常处理。