Spring核心之模型视图控制器(MVC)
大约 2 分钟框架Spring
Spring MVC是Spring框架中的一个模块,它遵循模型-视图-控制器(Model-View-Controller, MVC)设计模式,用于构建Web应用程序。下面是对Spring MVC的基本介绍以及一个简单的示例。
Spring MVC简介
模型(Model):模型代表数据和业务逻辑。在Spring MVC中,模型通常是Java对象,这些对象封装了应用程序的数据和操作这些数据的逻辑。
视图(View):视图负责展示模型中的数据给用户。在Spring MVC中,视图可以是JSP、Thymeleaf、FreeMarker等技术生成的HTML页面。
控制器(Controller):控制器负责接收用户的请求,处理请求并选择合适的视图来响应用户。在Spring MVC中,控制器通常是一个Java类,其中的方法(称为处理器方法)通过注解(如@RequestMapping
)与特定的URL映射。
Spring MVC工作流程
- 用户发起HTTP请求到服务器。
- 请求被Spring MVC的前端控制器
DispatcherServlet
捕获。 DispatcherServlet
根据请求的URL和预先配置的处理器映射,找到对应的处理器(Controller)。DispatcherServlet
调用处理器,并将处理请求所需的参数传递给处理器方法。- 处理器执行业务逻辑后,返回一个包含模型数据的逻辑视图名给
DispatcherServlet
。 DispatcherServlet
通过视图解析器,根据逻辑视图名找到实际的视图。- 视图将模型数据渲染成用户可以理解的页面(HTML等)。
DispatcherServlet
将最终的响应发送回用户浏览器。
示例
假设我们有一个简单的用户登录功能,以下是使用Spring MVC实现的简单示例:
1. 添加依赖
确保你的项目中包含了Spring MVC相关的依赖。
2. 创建Controller
创建一个名为LoginController
的Java类,用于处理登录请求。
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class LoginController {
@GetMapping("/login")
public String showLoginForm() {
// 显示登录表单
return "login";
}
@PostMapping("/login")
public String handleLogin(@RequestParam("username") String username,
@RequestParam("password") String password,
Model model) {
if ("admin".equals(username) && "123456".equals(password)) {
// 登录成功
model.addAttribute("message", "登录成功!");
return "success";
} else {
// 登录失败
model.addAttribute("errorMessage", "用户名或密码错误!");
return "login";
}
}
}
3. 视图
你需要创建两个视图文件,一个用于显示登录表单(login.html
或login.jsp
),另一个用于显示登录成功或失败的消息(success.html
或success.jsp
)。这些视图文件应放置在项目的视图目录下,具体取决于你使用的视图技术(如Thymeleaf、JSP等)。
以上就是一个非常基础的Spring MVC应用示例,展示了如何接收请求、处理业务逻辑,并返回视图的过程。在实际应用中,还会涉及到更多的功能,如数据验证、异常处理、安全性增强等。