springmvc是建立在spring基础上符合Web MVC设计模式的轻量级Web框架,也是当前web应用开发的主流框架,其主要内容包括以下几点
核心类和注解
springmvc最核心类包括前端控制器DispatcherServlet,处理器映射器(HanderMapping)、处理器适配器(HanderAdapter)和视图解析器(ViewResolver),作为开发人员只需要做好这些核心类的配置即可。dispactherServlet用于受理前端的请求,将请求交给HanderMapping建立请求与Handler之间的映射关系,完成后处理器适配器是根据特定的规则去执行Handler,再由ViewResolver生成完整的视图交给前端。用于controller类上注解包括@Controller、@RequestMapping,方法上注解包括:@RequestMapping(@GetMapping、@PostMapping、@PutMapping、@DeleteMapping和PatchMapping);
controller方法返回值
controller方法返回值可以是ModelAndView、String、void等形式;使用ModelAndView对象作为返回值时在该对象内指定view和model(数据);返回String时,可以完成返回逻辑视图、重定向(redirect)和转发(forward),此种方式返回只控制视图的跳转,但不传递数据,数据还需借助model参数。返回void时,与传统的Servlet使用相同,在异步请求中只返回数据,而不会跳转视图。
数据绑定
数据绑定就是将数据绑定方法的形参上,参数类型可以是默认参数类型、简单参数类型和复杂参数类型。其中默认参数类型包括HttpServletRequest、HttpServletResponse、HttpSession、Model/ModelMap;简单参数类型包括java中基本数据类型、包装类型、pojo类型等;复杂参数类型包括数组、集合等。注意:这里形参名必须和form表单中绑定的input name完全一致,否则报错。针对上述问题,SpringMVC提供了一个注解符**@RequestParam**解决此问题。
对json的支持
在web开发中前端和后端的信息传递使用json格式已经成为当前主流的开发模式;springmvc通过简单的配置,即可完成json格式和Java对象的相互转换。主要涉及两个注解符@RequestBody和@ResponseBody,其中@RequestBody用于方法形参前的注解、@ResponseBody用于方法返回值的注解。如果controller所有的方法均返回json格式,每个方springmvc提供了一个新的类的注解符@RestController,代表@ResponseBody+@Controller
对restful风格的支持
RESTful是一种编程风格,也就是一种按照rest要求的编程规范,对数据的CURD使用统一资源定位符(URI)。如: http://…/users/1可以代表查询、也可以代表删除等,是查询还是删除,需要根据前端传递的是GET请求还是DELETE请求。为了接收请求路径上参数,springmvc还提供了@PathVariable注解符,用于controller方法形参前面,接收请求路径上数据。