1、谈谈你对springmvc的理解

springmvc是一个基于Java的实现了MVC设计模式的Web框架,通过把Model,View,Controller分离,将web层进行解耦。springmvc是spring的一个模块,基于MVC的一个框架,无需中间整合层来整合。springmvc是Spring构建在Servlet API上的Web框架。目前大部分的javaweb 开发已经使用springmvc来做。它提供了模型 - 视图 - 控制器架构,可用于开发灵活的Web应用程序。


2、springmvc工作原理是什么

1.客户端发送请求到DispatcherServlet

2.DispatcherServlet查询handlerMapping找到处理请求的Controller

3.Controller调用业务逻辑后,返回ModelAndView

4.DispatcherServlet查询ModelAndView,找到指定视图

5.视图将结果返回到客户端


3、springmvc的流程?

1.用户发送请求至前端控制器DispatcherServlet。
2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3.处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4.DispatcherServlet调用HandlerAdapter 处理器适配器。

5.HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6.Controller执行完成返回ModelAndView。

7.HandlerAdapter将controller 执行结果ModelAndView返回给DispatcherServlet。

8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器。9.ViewReslover解析后返回具体View。
10.DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11.DispatcherServlet响应用户。


4、如何全局处理控制器异常?

通过@ControllerAdvice(也可使用@RestControllerAdvice)注解和@ExceptionHandler注解组合,通过在方法入参中捕获异常进行处理,举例如下:
@Slf4j
@RestControllerAdvice("cn.coding.manage.api")
public class GlobalExceptionControllerAdvice {

    @ExceptionHandler(NullPointerException.class)
    public Rest nullPointHandler(HttpServletRequest request, NullPointerException e) {
     System.out.println(e.getMessage);

        return RestBody.failure(-1, "出现异常了");
    }
}

5、springmvc中的控制器的注解一般用那个,有没有别的注解可以替代?

一般用@Conntroller注解,表示是表现层。也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller,表示是表现层。一般只能用着两个注解

如何处理Spring MVC 中的跨域问题?

  • 通过在控制层方法使用@CrossOrigin注解。
  • 通过springmvc 拦截器来处理,同理servlet中的filter也可以处理。
  • 通过在springmvc xml配置文件中的<mvc:cors> 标签中配置。

更多推荐

springmvc经典面试题