简述 SpringMVC 工作原理 ?
SpringMVC 是一个基于 Java 的实现 MVC 设计模式的请求驱动类型的轻量级 Web 框架,通过 SpringMVC 可以帮助我们快速搭建 Web 应用。下面我尽量用通俗易懂的方式来简述 SpringMVC 的工作原理。
当用户在 Web 浏览器中输入 URL 时,这个过程就开始了。
- 用户发送请求:用户在浏览器地址栏输入 URL,然后发送请求到服务器。
- 前端控制器(DispatcherServlet):这是 SpringMVC 的核心部分,它是一个 Servlet,用于接收所有的请求,并把这些请求进行转发。DispatcherServlet 相当于一个“大管家”,它负责调度和管理整个流程。
- 查找 Handler(处理器):DispatcherServlet 接收到请求后,会去查找一个或多个 HandlerMapping(处理器映射),看哪个 Handler 能处理这个请求。Handler 实际上就是一个控制器(Controller)。
- 执行 Handler(执行控制器):DispatcherServlet 根据 HandlerMapping 找到对应的 Handler 后,将请求交给这个 Handler 去处理。Handler 会根据请求的内容进行一些逻辑处理,并返回一个 ModelAndView 对象。
- 视图解析(View Resolver):DispatcherServlet 拿到 Handler 返回的 ModelAndView 对象后,会去找一个或多个 ViewResolver(视图解析器),看哪个能解析这个视图。
- 渲染视图(View):ViewResolver 解析出视图后,DispatcherServlet 会使用这个视图对用户的数据进行渲染,然后将渲染后的结果返回给用户。
举个例子,假设我们有一个简单的博客系统,用户点击了某篇文章的链接,这时浏览器就会发送一个请求到服务器。服务器上的 DispatcherServlet 接收到这个请求后,会去找哪个 Handler(可能是一个名为 ArticleController 的控制器)能处理这个请求。找到后,DispatcherServlet 会把这个请求交给 ArticleController 去处理。ArticleController 拿到请求后,会根据请求中的文章 ID 从数据库中取出文章的内容,然后封装成一个 ModelAndView 对象返回给 DispatcherServlet。DispatcherServlet 拿到这个 ModelAndView 对象后,会去找哪个 ViewResolver 能解析这个视图。找到后,ViewResolver 会解析出一个视图(可能是一个 JSP 页面),然后 DispatcherServlet 会使用这个视图对文章的内容进行渲染,最后将渲染后的结果返回给用户,用户就能在浏览器中看到这篇文章的内容了。