SpringMVC

目的:为更方便的进行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

 

 

原文地址:https://www.cnblogs.com/mo-jian-ming/p/13323671.html