SpringMVC运行原理
SpringMVC的工作流程
- tomcat启动时,先加载web.xml,找到spring mvc的前端总控制器DispatcherServlet,并且通过DispatcherServlet来加载相关的配置文件信息。
- 当浏览器发出一个请求之后,首先找到DispatcherServlet,通过这个控制器和代码中的requestMapping注解找到对应的controller中的方法,参数直接通过方法参数接收就可以,然后调用service、dao操作数据库,返回数据。如果页面跳转,controller的方法可以返回ModelAndView和string类型,再通过spring-mvc配置文件中的视图解析器找到对应的页面。
- 数据可以用request或ModelAndView返回到页面。如果是ajax请求,可以直接返回List或对象,加上responseBody注解,进行返回。
SpringMVC涉及到的常用注解
@Controller
用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。
@RestController
等价于@ResponseBody + @Controller。两者区别:使用@Controller,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面,若返回json等内容到页面,则需要加@ResponseBody注解
@RestController,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@RequestParams
@requestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”),它有三个常用参数:defaultValue = “0”, required = false, value = “isApp”;defaultValue 表示设置默认值,required 铜过boolean设置是否是必须要传入的参数,value 值表示接受的传入的参数类型。
@PathVariable
用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数
@RequestBody
作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
@ResponseBody
作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;