目的:为更方便的进行Web的开发,实现前后端分离
1、前置控制器 DispatcherServlet 是核心,与Spring IoC容器做到了无缝集成。
DispatcherServlet其实就是个Servlet(它继承自HttpServlet基类)
2、DispatcherServlet都持有一个自己的上下文对象WebApplicationContext
3、工作流程
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果
4、请求转发与重定向
return "forward:/WEB-INF/jsp/S1.jsp"; return "redirect:/xx"
因为WEB-INF目录下的资源不是公共资源,不能直接访问。所以就可以起到那个保护这些代码未经授权的访问和窥视,更好的保护资源。
我们需要通过servlet中请求转发到该页面才可访问。这样url地址也不会显示改地址。使用重定向是无法访问该资源的。
5、restful风格
简易,安全(URL不含变量名)
@GetMapping("/URL")、Post、Put、Delete //定义请求方式,同样的url,不同的请求方式,对应不同的响应 "/{a}/{b}" (@PathVariable int a,@PathVariable int b) //从url中获取变量值 @RequestParam(value="username") String name //原始?username=xxx