什么是SpringMvc
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web 框架,即使用了MVC架构模式的思想,将web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
SpingMvc的作用
-
让我们能非常简单的设计出干净的Web 层和薄薄的Web 层;
-
进行更简洁的Web 层的开发;请求参数是映射到方法的参数上
-
天生与Spring框架集成(如IoC容器、AOP等);
-
提供强大的约定大于配置的契约式编程支持;
-
能简单的进行Web 层的单元测试;
-
支持灵活的URL到页面控制器的映射;
-
非常容易与其他视图技术集成,如Velocity、FreeMarker 等等,因为模型数据不放在特定的API 里,而是放在一个Model里(Map 数据结构实现,因此很容易被其他框架使用);
-
非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;
-
提供一套强大的JSP标签库,简化JSP开发;
-
支持灵活的本地化、主题等解析;
-
更加简单的异常处理;
-
对静态资源的支持;
-
支持Restful风格。
SpringMvc 的执行流程
1.用户发送请求至前端控制器DispatcherServlet:当用户在浏览器中输入URL,并发送请求时,请求会被发送至前端控制器DispatcherServlet,它是SpringMVC的核心组件。
2.DispatcherServlet调用HandlerMapping处理器映射器:DispatcherServlet会调用处理器映射器HandlerMapping,它负责根据请求的URL找到对应的处理器(Controller)。
3.处理器映射器生成处理器对象和处理器拦截器:处理器映射器根据请求的URL找到具体的处理器(Controller),同时也可能会生成相关的处理器拦截器(如果有的话),然后将处理器对象和拦截器返回给DispatcherServlet。
4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器:DispatcherServlet会将请求交给处理器适配器HandlerAdapter,该适配器将根据不同的处理器类型来调用相应的处理方法,也就是执行处理器(Controller)。
5.执行处理器(Controller):处理器(Controller)会根据请求的业务逻辑进行处理,并返回一个ModelAndView对象作为处理结果。
6.Controller执行完成返回ModelAndView:Controller执行完毕后,会将处理结果封装在一个ModelAndView对象中,并将其返回给HandlerAdapter。
7.HandlerAdapter将ModelAndView返回给DispatcherServlet:HandlerAdapter会将Controller执行的结果ModelAndView返回给DispatcherServlet。
8.DispatcherServlet将ModelAndView传给ViewResolver视图解析器:DispatcherServlet接收到ModelAndView后,会将其传递给视图解析器ViewResolver,它的作用是根据视图名称解析出具体的视图对象。
9.ViewResolver解析后返回具体View:视图解析器ViewResolver根据视图名称解析出具体的视图对象(View),可以是JSP页面、Thymeleaf模板等。
10.DispatcherServlet对View进行渲染视图:DispatcherServlet接收到具体的视图对象后,会进行视图的渲染,即将Controller处理结果中的模型数据填充至视图中。
11.DispatcherServlet响应用户:渲染完成后,DispatcherServlet会将视图返回给用户,用户就可以在浏览器中看到请求的结果。
总结:SpringMVC的执行流程可以概括为:用户发送请求至前端控制器DispatcherServlet,DispatcherServlet通过处理器映射器找到处理器(Controller),并通过适配器调用处理器执行业务逻辑,处理器返回处理结果给DispatcherServlet,然后DispatcherServlet通过视图解析器解析视图,最后将视图渲染后响应给用户。这个流程实现了请求的转发和处理,并将处理结果呈现给用户。
SpringMvc的常用注解
@Controller:用于标识一个控制器类,处理用户请求,并返回视图或数据。
@RequestMapping:用于映射请求URL和方法的关系。可以用在控制器类上,表示该类处理的请求的根路径;也可以用在控制器方法上,表示该方法处理的请求的具体路径。
@RequestParam:用于绑定请求参数到方法参数上。可以指定请求参数的名称,也可以指定是否必须存在。
@ResponseBody:用于将方法的返回值直接作为响应体返回给客户端,而不是作为视图解析。
@RequestBody:用于将请求体的内容绑定到方法参数上。
@RequestHeader:用于获取请求头中的值。
总结
Spring MVC是一个基于Java的Web应用开发框架,它是Spring框架的一部分。它通过MVC(Model-View-Controller)的设计模式将应用程序的逻辑层、展示层和数据层分离,提供了一种结构清晰、易于维护的开发方式。
Spring MVC的核心组件包括控制器(Controller)、视图(View)和模型(Model):
控制器负责接收用户请求,处理业务逻辑,并将处理结果发送给视图进行展示。
视图负责将处理结果呈现给用户,一般为HTML页面或者JSON/XML数据。
模型表示应用程序的数据,可以是数据库中的数据,也可以是由控制器处理后的数据。
Spring MVC的工作流程如下:
客户端发送请求到DispatcherServlet。
DispatcherServlet根据请求的URL选择一个或多个HandlerMapping来确定请求的处理器(Controller)。
HandlerMapping将请求传递给Controller。
Controller处理请求,并将处理结果封装为ModelAndView对象。
ModelAndView对象被传递给适当的ViewResolver来渲染视图。
渲染后的视图返回给客户端。
Spring MVC的优点:
松耦合:Spring MVC采用了面向接口的编程方式,使得控制器、视图和模型之间的耦合度较低,方便模块的替换和重用。
灵活性:Spring MVC提供了灵活的配置方式,可以通过XML配置文件或者注解来配置控制器和视图。
易于测试:Spring MVC的控制器和模型可以进行单元测试,方便开发人员编写和执行测试用例。
强大的拓展性:Spring MVC是基于Servlet的,可以与其他框架和技术进行集成,如Spring、MyBatis等。
还没有评论,来说两句吧...