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)。以下是基本步骤:
- 创建Maven项目和Maven Web模块:通过IDEA的File -> New -> Project,选择Maven Project,并添加Maven Web模块。
- 设置Maven路径:在IDEA中配置Maven的路径。
- 修改web.xml:配置web应用的版本约束和Servlet容器的基本配置。
- 添加依赖:在pom.xml中添加Spring MVC和其他必要的依赖,如servlet-api、spring-context等。
- 创建Controller:编写控制器类,并使用@Controller注解标记。
- 配置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响应体中。
通过以上步骤和技巧,可以高效地搭建和开发基于Spring MVC的Web应用程序。