1. MVC模式
MVC模式代表Model-View-Controller(模型-视图-控制器)模式,是一种用于应用程序分层开发的软件设计典范。MVC模式通过将业务逻辑、数据与界面显示分离,使得应用程序的开发和维护变得更加容易。
Model(模型):模型代表一个存取数据的对象或Java POJO(Plain Old Java Object),是业务逻辑的载体。模型拥有最多的处理任务,被模型返回的数据是中立的,与数据格式无关,因此一个模型能为多个视图提供数据。
View(视图):视图代表模型包含的数据的可视化,是用户看到并与之交互的界面。视图负责展示数据,但不包含业务逻辑。
Controller(控制器):控制器作用于模型和视图上,它控制数据流向模型对象,并在数据变化时更新视图。它接收用户的输入,调用模型和视图完成用户需求,但本身不输出任何东西和做任何处理。
2. 搭建Spring MVC 环境
2.1 第一个Spring MVC程序
搭建Spring MVC项目通常需要准备Tomcat服务器、Maven依赖管理工具以及IDE(如IntelliJ IDEA)。以下是基本步骤:
1.创建Maven项目和Maven Web模块:通过IDEA的File -> New -> Project,选择Maven Project,并添加Maven Web模块。
2.设置Maven路径:在IDEA中配置Maven的路径。
3.修改web.xml:配置web应用的版本约束和Servlet容器的基本配置。
4.添加依赖:在pom.xml中添加Spring MVC和其他必要的依赖,如servlet-api、spring-context等。
5.创建Controller:编写控制器类,并使用@Controller注解标记。
6.配置DispatcherServlet:在web.xml中配置DispatcherServlet,或者在Java配置类中通过WebApplicationInitializer接口注册DispatcherServlet。
2.2 使用注解开发Spring MVC 框架
Spring MVC支持使用注解来简化开发过程,主要注解包括:
@Controller:用于标记一个类作为Spring MVC的控制器。
@RequestMapping:用于映射Web请求到具体的处理函数上。它可以指定请求的路径、请求方法等。
@PostMapping、@GetMapping、@PutMapping、@DeleteMapping:这些注解是@RequestMapping的简化形式,分别用于处理POST、GET、PUT、DELETE请求。
@RequestParam:用于将请求参数绑定到你的控制器处理方法的参数上。
@RequestBody:用于将HTTP请求正文绑定到方法的参数上,通常用于处理JSON或XML数据。
2.3 Spring MVC 框架梳理
Spring MVC的核心思想是请求和响应的分离,它将Web应用程序分为前端控制器(DispatcherServlet)、处理器映射(HandlerMapping)、处理器(Controller)、视图解析器(ViewResolver)等部分。
DispatcherServlet:作为前端控制器,接收所有的HTTP请求,并分发到相应的处理器。
HandlerMapping:根据请求的URL找到对应的处理器。
Controller:处理具体的业务逻辑,并返回模型数据和视图名称。
ViewResolver:根据视图名称解析为具体的视图对象,进行页面渲染。
3. 前后端数据交互
3.1 @RequestMapping注解
@RequestMapping注解用于将HTTP请求映射到具体的处理器方法上。可以指定请求的URL路径、请求方法(GET、POST等)、请求参数等。
3.2 入参处理
在Spring MVC中,处理HTTP请求时,控制器方法的入参可以通过多种方式获取:
@RequestParam:用于获取请求参数的值。
@PathVariable:用于获取URL模板变量中的值。
@RequestBody:用于获取HTTP请求正文的内容,并自动转换为Java对象。
自动装箱:Spring MVC会自动将请求参数名与控制器方法参数名匹配的请求参数值赋给该参数。
3.3 出参处理
控制器方法的出参处理也很灵活,可以通过多种方式返回数据给前端:
返回字符串:通常返回视图名称,由视图解析器解析为具体的视图对象。
返回ModelAndView:包含视图名称和模型数据,可以直接返回给前端。
返回JSON或XML:使用@ResponseBody注解,Spring MVC会自动将返回的Java对象转换为JSON或XML格式的数据,并写入HTTP响应体中。
四、SpringMVC的工作流程
当一个请求到达时,Spring MVC的工作流程大致如下:
请求到达DispatcherServlet:DispatcherServlet是Spring MVC的前端控制器,负责接收客户端的请求。
解析请求URL:DispatcherServlet解析请求URL,根据配置找到对应的Controller来处理请求。
调用Controller:DispatcherServlet将请求转发给相应的Controller,Controller处理请求后返回一个Model对象。
解析View:DispatcherServlet使用配置的ViewResolver解析View的名称,找到实际的View对象。
渲染视图:DispatcherServlet将Model对象传递给View进行渲染,生成最终的响应结果。
返回响应给客户端:渲染后的结果作为HTTP响应返回给客户端。
五、SpringMVC的创建和使用
Spring MVC项目的创建方式主要有两种:使用Maven项目添加Spring MVC框架依赖:通过Maven构建项目时,可以在pom.xml文件中添加Spring MVC的依赖,然后配置相关的Web环境。
使用Spring Boot创建Spring MVC项目:由于Spring Boot简化了Spring应用的初始搭建和开发过程,现在大多数Spring MVC项目都是基于Spring Boot创建的。在创建Spring Boot项目时,选择Spring Web框架即可。
Spring MVC项目创建后,可以通过注解(如@RequestMapping、@PostMapping、@GetMapping等)来实现路由映射,通过控制器(Controller)来处理请求,通过视图(View)来展示数据。
总的来说,SpringMVC框架通过提供一套完整的开发流程和特性,帮助开发者构建高性能的Web应用程序,并通过与Spring框架的无缝集成,实现灵活性、可配置性和可扩展性。