所谓MVC,即模型-视图-控制器,是一种比较普遍使用的设计模式。它通过分离模型、视图、控制器在程序中的角色进行解耦的。通常,模型负责封装应用程序数据在视图层的展示,视图负责展示这些数据,控制器负责接收来自用户的请求,并调用后台服务来处理业务逻辑。(核心思想是将业务逻辑从界面中分离开来,允许它们单独的改变而不互相影响)
所谓Spring MVC,是基于Spring实现MVC设计模式的一种Web框架,它与spring无需通过中间整合层进行整合 。它以强大的Spring Ioc容器为基础,充分利用容器的特性来简化配置的。
Spring MVC与Struts2的区别:
- Spring MVC的入口是一个servlet(前端控制器),而Struts2则是一个filter(过滤器)
- Spring MVC是基于方法(切面)开发的,而Struts2是基于类开发的
- Spring MVC通过参数解析器将request请求数据解析,并给方法形参赋值,将数据和视图封装成对象,最好通过request域传输到页面,而Struts2通过值栈存储请求和响应数据的。
Spring MVC的运行原理:
- 用户发送请求-->DispatcherServlet:发起请求到前端控制器(DispatcherServlet);
- DispatcherServlet-->HandlerMapping:前端控制器请求HandlerMapping查找 Handler可以根据xml配置、注解进行查找会把请求映射为HandlerExecutionChain对象;(这样,很容易添加新的映射策略)
- 处理器映射器HandlerMapping向前端控制器返回Handler;
- 前端控制器调用处理器适配器去执行Handler;
- 处理器适配器去执行Handler;
- Handler执行完成给适配器返回ModelAndView;
- 处理器适配器向前端控制器返回ModelAndView;
- 前端控制器请求视图解析器去进行视图解析;
- 视图解析器向前端控制器返回View;
- 前端控制器进行视图渲染;
- 前端控制器向用户响应结果,流程结束;
Spring MVC使用流程:
- 导入Spring MVC所需要的jar包
- 添加Web.xml配置文件中关于Spring MVC的配置
- 添加xxx-servlet.xml配置文件(xxx与Web.xml文件中相匹配)
- 创建jsp文件(test.jsp),用于显示视图(View层)
- 创建Controller类,用于控制层操作(Controller层)
- 配置并启动Tomcat服务器进行运行
Spring MVC常见注解:
@Controller:负责注册一个bean到Spring上下文中
@RequestMapping:注解为控制器指定可以处理哪些URL请求
@RequestBody:用于读取Request请求的Body不等数据,并进行解析,然后把相应的数据绑定到返回对象中,再把返回对象绑定到controller中方法的参数里
@ResponseBody:用于将Controller方法返回的对象转换为指定的格式后,写入到Response对象的body数据区
@RequestParam:把请求参数传递给请求方法中
@PathVariable:绑定URL占位符到入参
@ExceptionHandler:出现异常时会调用此方法
@ControllerAdvice:将一个controller成为全局的异常处理类,处理所有Controller发生的异常