Spring Web MVC 入门秘籍:从概念到实践的快速通道

Spring Web MVC 入门秘籍:从概念到实践的快速通道
(2025–2026 最新风格,最适合快速上手)

这是一份极简但完整的 Spring Web MVC 入门指南,目标是让你在最短时间内理解核心概念、搭建第一个项目,并写出能用的接口。

第一步:先搞清楚 Spring Web MVC 到底是什么

一句话定义:

Spring Web MVC 是 Spring 框架提供的基于 Servlet 的 Web 层 MVC 框架,目前仍然是 Java 后端最主流的 Web 开发技术栈之一。

核心思想:“请求 → 控制器 → 业务 → 视图/响应”

经典流程图(文字版):

浏览器请求 → DispatcherServlet(前端控制器)  
          ↓  
HandlerMapping(找控制器方法)  
          ↓  
HandlerAdapter(执行控制器方法)  
          ↓  
Controller(你的 @RestController / @Controller)  
          ↓  
返回 ModelAndView 或 ResponseEntity / @ResponseBody  
          ↓  
ViewResolver(视图解析)或直接写 JSON  
          ↓  
响应给浏览器

第二步:最核心的 8 个概念(背下来就入门了)

序号概念通俗解释对应注解/类是否必会
1DispatcherServletSpring MVC 的“大脑”,所有请求都先到它web.xml 或 SpringBoot 自动配置★★★★★
2@Controller声明这是一个控制器(返回视图)@Controller★★★★☆
3@RestController控制器 + 所有方法默认 @ResponseBody(返回 JSON)@RestController★★★★★
4@RequestMapping映射请求路径、方法(GET/POST 等)@GetMapping / @PostMapping 等★★★★★
5@RequestParam接收查询参数 / 表单参数@RequestParam★★★★☆
6@PathVariable接收 URL 路径中的变量@PathVariable★★★★☆
7@RequestBody接收 JSON 请求体@RequestBody★★★★★
8Model / ModelAndView向视图传递数据(传统视图用得多)Model.addAttribute()★★★☆☆

第三步:Spring Boot 项目快速搭建(推荐方式)

方式一:使用 Spring Initializr(最快)

  1. 打开:https://start.spring.io
  2. 选择:
  • Project:Maven / Gradle
  • Language:Java
  • Spring Boot:3.3.x 或 3.4.x
  • Dependencies:Spring Web
  1. 生成 → 解压 → 用 IDEA 打开

方式二:IDEA 直接创建

New Project → Spring Initializr → 选 Spring Web → Finish

第四步:第一个能跑的 Hello World(Restful 接口)

// HelloController.java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello(
            @RequestParam(value = "name", defaultValue = "World") String name) {
        return "Hello, " + name + "!";
    }

    @GetMapping("/user/{id}")
    public String getUser(@PathVariable Long id) {
        return "User ID: " + id;
    }
}

访问:

  • http://localhost:8080/hello → Hello, World!
  • http://localhost:8080/hello?name=Tom → Hello, Tom!
  • http://localhost:8080/user/123 → User ID: 123

第五步:接收 JSON 参数(最常用场景)

// User.java(DTO)
public class User {
    private Long id;
    private String username;
    private Integer age;
    // getter / setter / toString
}

// Controller
@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user) {
    // 模拟保存
    user.setId(100L);
    return ResponseEntity.ok(user);
}

Postman 测试 body(raw json)

{
    "username": "alice",
    "age": 25
}

返回:

{
    "id": 100,
    "username": "alice",
    "age": 25
}

第六步:必会的高频注解组合速查表

场景推荐写法说明
GET 查询参数@GetMapping + @RequestParam查询字符串
GET 路径参数@GetMapping("/users/{id}") + @PathVariableRESTful 风格
POST JSON@PostMapping + @RequestBody最常见创建接口
PUT 更新@PutMapping + @RequestBody整体更新
PATCH 部分更新@PatchMapping + @RequestBody局部更新
DELETE@DeleteMapping("/users/{id}")删除资源
返回状态码 + 数据ResponseEntity.ok() / .created()推荐方式
文件上传@PostMapping + @RequestPart("file") MultipartFile file上传场景

第七步:常见新手坑 & 解决方案

  1. 启动类没扫描到 Controller
    确保启动类在根包下,或使用 @ComponentScan("com.your.base.package")
  2. @RequestBody 接收不到数据
    检查 Content-Type 是否为 application/json
    检查 DTO 是否有无参构造 + getter/setter
  3. 返回 JSON 中字段为 null 不显示
    默认不显示 null,可加 @JsonInclude(Include.ALWAYS)
  4. 跨域问题(CORS)
    最快解决:加 @CrossOrigin 或全局配置 CorsFilter

第八步:推荐的进阶学习路径(快速上手后)

  1. @ControllerAdvice + @ExceptionHandler 统一异常处理
  2. @Valid + BindingResult 参数校验
  3. ResponseEntity 精细控制响应
  4. RestTemplate / WebClient 调用下游接口
  5. 拦截器(HandlerInterceptor)过滤器(Filter) 的区别
  6. 了解 Spring Boot Actuator 暴露端点

最后总结:一句话快速记住 Spring Web MVC

Spring Web MVC 的本质就是:DispatcherServlet 接收所有请求 → 根据路径找到你的 @RestController 方法 → 执行方法 → 返回数据/视图 → 响应浏览器。

记住这 8 个核心注解 + 一个流程,你就已经入门了。

需要我现在帮你写一个带异常处理、参数校验、分页查询、统一响应格式的完整小 Demo 吗?
或者想深入某个具体点(比如文件上传、统一响应封装、CORS、拦截器)?
直接告诉我,我可以继续展开!

文章已创建 4391

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部