SpringMVC总结

1. SpringMVC简介

MVC即模型-视图-控制器(Model-View-Controller)

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

2. SpringMVC运行原理

1). 客户端请求提交到DispatcherServlet
2). 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
3). DispatcherServlet将请求提交到Controller
4). Controller调用业务逻辑处理后,返回ModelAndView
5). DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6). 视图负责将结果显示到客户端

3. 常用注解

  • @Controller负责注册一个bean到spring上下文中
  • @RequestMapping 注解为控制器指定可以处理哪些 URL 请求
  • @RequestBody 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
  • @ResponseBody 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
  • @ModelAttribute 在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法,在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中
  • @RequestParam 在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法
  • @PathVariable 绑定 URL 占位符到入参
  • @ExceptionHandler 注解到方法上,出现异常时会执行该方法
  • @ControllerAdvice 使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常

4. SpringMVC配置与使用

4.1 配置DispatcherServlet

Java配置方式

通过AbstractAnnotationConfigDispatcherServlet-Initializer来配置DispatcherServlet

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;  public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {      @Override     protected Class<?>[] getRootConfigClasses() {         return new Class<?>[] { RootConfig.class };     }      @Override     protected Class<?>[] getServletConfigClasses() {         return new Class<?>[] { WebConfig.class };     }      @Override     protected String[] getServletMappings() {         return new String[] { "/" };     }  }

xml配置方式

传统web.xml方式

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"