1、SpringMVC的执行流程:

服务器启动就会创建mvc的上下文域(子容器)然后把spring容器的东西也获取返回上下文域中:
- 用户发送请求到前端控制器(DispatcherServlet),前端控制器接收并拦截请求;
- (放行处理:在配置了过滤器,在dofilter方法中设置放行请求,前端控制器就会对这些请求放行;比如说:登录页面的放行;)
- HandlerMapping处理器映射器会被前端控制器调用,处理器映射器就会根据url以及请求方式找到对应的Handler处理器;
- 返回处理器执行链,根据url查找控制器controller,并且将解析后的信息返回到前端控制器;
- HandlerAdapter处理器适配器,其按照特定的规则去执行Handler;
- 执行Handler查找到的具体控制器Controller;
- 控制器controller将具体的执行信息返回给处理器适配器,如:视图与模型(Model and View);
- 处理器适配器将视图逻辑名或者模型返回给前端控制器;
- 前端控制器会调用视图解析器来对处理器适配器传来的视图逻辑名进行解析;
- 视图解析器处理完毕后会将解析好的视图View对象返回;
- 前端控制器会根据视图解析器解析视图的结果,调用具体的视图,进行视图渲染;
- 完成渲染后将响应数据返回用户;
2、谈一下SpringMVC统一异常处理的思想和实现方式(必会)
使用SpringMVC之后,代码的调用者是SpringMVC框架,也就是说最终的异常会抛到框架中,然后由框架指定异常处理类进行统一处理
- 方式一:创建一个自定义异常处理器(实现HandlerExceptionResolver接口),并实现里面的异常处理方法,然后将这个类交给Spring容器管理
方式二:在类上加注解(@ControllerAdvice)表明这是一个全局异常处理类在方法上加注解(@ExceptionHandler),在 ExceptionHandler中有一个value属性,可以指定可以处理的异常类型
3、在SpringMVC中文件上传的使用步骤是什么样的? 前台三要素是什么?(必会)
文件上传步骤: 1.加入文件上传需要的commons-fileupload包 2.配置文件上传解析器,springmvc的配置文件的文件上传解析器的id属性必须为multipartResolver 3.后端对应的接收文件的方法参数类型必须为MultipartFile,参数名称必须与前端的name属性保持一致 文件上传前端三要素: 1.form表单的提交方式必须为post 2.enctype属性需要修改为:multipart/form-data 3.必须有一个type属性为file的input标签,其中需要有一个name属性;如果需要上传多个文件需要添加 multiple属性
4、MVC模式与三层架构
三层架构是将我们的项目分成了三个层面,分别是 表现层、业务逻辑层、数据访问层。

数据访问层:对数据库的CRUD基本操作
- 业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能。
- 例如 注册业务功能 ,先调用 数据访问层 的 selectByName() 方法判断该用户名是否存在,如果不存在再调用 数据访问层 的 insert() 方法进行数据的添加操作
- 表现层:接收请求,封装数据,调用业务逻辑层,响应数据
而整个流程是,浏览器发送请求,表现层的Servlet接收请求并调用业务逻辑层的方法进行业务逻辑处理,而业务逻辑层方法调用数据访问层方法进行数据的操作,依次返回到serlvet,然后servlet将数据进行展示。
MVC是一个大的概念,三层架构是对MVC模式实现架构的思想,按照要求将不同层的代码写在不同的包下,每一层里功能职责做到单一,将来如果将表现层的技术换掉,业务逻辑层和数据访问层的代码也不需要发生变化。
简单来说:MVC指的是模型控制器视图、三层架构指的是Web层、Service层、Dao层
