SpringMVC的工作流程

打印 上一主题 下一主题

主题 895|帖子 895|积分 2685

1.工作流程


(1)用户通过欣赏器向服务器发送哀求,哀求会被Spring MVC的前端控制器DispatcherServlet拦截。
(2)DispatcherServlet拦截到哀求后,会调用HandlerMapping(处理惩罚器映射器)。
(3)处理惩罚器映射器根据哀求URL找到详细的处理惩罚器,生成处理惩罚器对象及处理惩罚器拦截器(如果有则生成)一并返回给DispatcherServlet。
(4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理惩罚器适配器)。
(5) HandlerAdapter会调用并执行Handler(处理惩罚器),这里的处理惩罚器指的就是步伐中编写的Controller类,也被称之为后端控制器。
(6)Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名。
(7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet。
(8)前端控制器哀求视图解析器根据逻辑视图名解析真正的视图。
(9)ViewResolver解析后,会向DispatcherServlet中返回详细的View(视图)。
(10)DispatcherServlet对View进行渲染(即将模型数据填充至视图中)。
(11)前端控制器向用户响应结果,欣赏器将结果呈现给用户。
在上述过程中,DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver对象的工作是在框架内部执行的,开辟职员只必要设置DispatcherServlet,完成Controller中的业务处理惩罚并在View中展示相应信息。
2.DispatcherServlet****类

DispatcherServlet是前端控制器,是整个流程控制的中心。该类拦截了客户端的哀求之后,会根据详细规则将哀求交给其他组件处理惩罚,从而降低了组件之间的耦合性。

3.Controller****接口

SpringMVC将Controller接口的实现类组件名,作为哀求访问的URL进行映射,进而执行handleRequest()方法中的业务逻辑代码。
4.@RequestMapping****注解

@RequestMapping注解用于建立哀求URL和Handler(处理惩罚器)之间的映射关系,该注解可以标注在方法上和类上。
(1)标注在 方法上 时,注解内 value值 对应到欣赏器中输入的 访问地址 (站点名之后 URL 字符串)。

  1. 请求地址:http://localhost:8080/chapter01/hello
  2. @Controller
  3. public class MyController {
  4.    private static final Logger logger=Logger.getLogger(MyController.class);      
  5.     @RequestMapping("/hello")
  6.     public String sayHello() {
  7.            logger.info("访问到MyController!");
  8.            return "hello";
  9.     }
  10. }
复制代码
(2) 标注在 类名上 时,注解内 value值 相当于设置了本处理惩罚器类的 命名空间 ,类中所有哀求地址应为命名空间名 + 方法映射地址名。
  1. 请求地址:http://localhost:8080/chapter01/api/hello
  2. @Controller
  3. @RequestMapping("/api")
  4. public class MyController {
  5.     private static final Logger logger=Logger.getLogger(MyController.class);   
  6.     @RequestMapping("/hello")
  7.     public String sayHello() {
  8.            logger.info("访问到MyController!");
  9.            return "hello";
  10.     }
  11. }
复制代码
(3)包含的传递参数
属性名
类型
形貌
name
String
可选属性,用于为映射地址指定别名。
value
String[]
可选属性,也是默认属性,用于指定哀求的URL。
method
RequestMethod[]
可选属性,用于指定该方法可以处理惩罚哪种类型的哀求方式。
params
String[]
可选属性,用于指定客户端哀求中参数的值,必须包含哪些参数的值,才可以通过其标注的方法处理惩罚。
headers
String[]
可选属性,用于指定客户端哀求中,必须包含哪些header的值,才可以通过其标注的方法处理惩罚。
consumes
String[]
可选属性,用于指定处理惩罚哀求的提交内容类型(Content-type)。
produces
String[]
可选属性,用于指定返回的内容类型,仅当request哀求头中的(Accept)类型中包含该指定类型才返回。
(4) 组合注解
从Spring 4.3版本开始,还可以使用组合注解完成客户端哀求方式的限定。
@GetMapping :匹配 GET 方式的哀求 ;
@PostMapping :匹配 POST 方式的哀求 ;
@PutMapping :匹配 PUT 方式的哀求 ;
@DeleteMapping :匹配 DELETE 方式的哀求 ;
@PatchMapping :匹配 PATCH 方式的哀求 ;
5.ModelAndView****类

ModelAndView类用于封装Controller的处理惩罚结果,除了包含数据之外,还包含要跳转的页面。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表