您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# SpringBoot中的MVC怎么用
## 一、Spring MVC概述
Spring MVC是Spring框架提供的Web模块,基于经典的MVC(Model-View-Controller)设计模式。在SpringBoot中,通过自动配置简化了传统Spring MVC的配置流程。
### 1.1 核心组件
- **DispatcherServlet**:前端控制器,统一处理请求
- **HandlerMapping**:请求到处理器的映射
- **Controller**:业务逻辑处理器
- **ViewResolver**:视图解析器
- **Model**:数据模型载体
### 1.2 工作流程
1. 用户发起HTTP请求
2. DispatcherServlet接收请求
3. HandlerMapping找到对应的Controller
4. Controller处理业务并返回ModelAndView
5. ViewResolver解析视图
6. 渲染视图返回响应
## 二、快速搭建SpringBoot MVC项目
### 2.1 创建项目
使用Spring Initializr创建项目时勾选:
- Spring Web(包含Spring MVC)
- Thymeleaf(可选模板引擎)
```xml
<!-- pom.xml关键依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
# application.properties
server.port=8080
spring.mvc.view.prefix=/templates/
spring.mvc.view.suffix=.html
@Controller
@RequestMapping("/demo")
public class DemoController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello Spring MVC!");
return "hello"; // 对应templates/hello.html
}
}
注解 | 说明 |
---|---|
@Controller |
声明为控制器 |
@RestController |
控制器+@ResponseBody |
@RequestMapping |
请求映射基础注解 |
@GetMapping |
GET请求映射 |
@PostMapping |
POST请求映射 |
@PathVariable |
路径变量 |
@RequestParam |
请求参数 |
@RequestBody |
请求体绑定 |
@ModelAttribute |
模型属性 |
@PostMapping("/user")
public String createUser(
@RequestParam String username,
@RequestParam(defaultValue = "18") int age,
@RequestBody UserDTO user) {
// 处理逻辑
return "result";
}
<!-- templates/hello.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Demo Page</title>
</head>
<body>
<h1 th:text="${message}">Default Message</h1>
</body>
</html>
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/data")
public Map<String, Object> getData() {
return Map.of(
"status", 200,
"data", "Some API Data"
);
}
}
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
return ResponseEntity
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("Error: " + e.getMessage());
}
}
@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
public ResourceNotFoundException(String message) {
super(message);
}
}
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping
public List<User> listUsers() {
// 返回用户列表
}
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
// 返回单个用户
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public User createUser(@RequestBody User user) {
// 创建用户
}
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id,
@RequestBody User user) {
// 更新用户
}
@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void deleteUser(@PathVariable Long id) {
// 删除用户
}
}
@PostMapping("/upload")
public String handleUpload(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
// 保存文件逻辑
return "Upload success";
}
return "Upload failed";
}
public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
// 认证逻辑
return true; // 返回false则中断请求
}
}
// 注册拦截器
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor())
.addPathPatterns("/admin/**");
}
}
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.maxAge(3600);
}
}
404错误:
模板引擎不生效:
POST请求接收不到参数:
SpringBoot通过自动配置极大简化了Spring MVC的使用,开发者只需: 1. 添加spring-boot-starter-web依赖 2. 创建@Controller或@RestController 3. 定义@RequestMapping方法 4. 处理业务逻辑并返回结果
结合Thymeleaf等模板引擎可以快速开发传统Web应用,而@RestController则适合构建RESTful API。合理运用拦截器、异常处理等机制可以构建健壮的Web应用程序。 “`
(全文约2150字,涵盖SpringBoot MVC核心用法和实用技巧)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。