侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

Spring MVC中如何创建控制器并处理GET请求

2025-12-13 / 0 评论 / 4 阅读

题目

Spring MVC中如何创建控制器并处理GET请求

信息

  • 类型:问答
  • 难度:⭐

考点

控制器创建,请求映射,模型数据传递

快速回答

在Spring MVC中创建控制器处理GET请求的基本步骤:

  1. 使用@Controller注解标记控制器类
  2. 使用@GetMapping注解定义处理GET请求的方法
  3. 通过方法参数注入Model对象传递数据到视图
  4. 返回视图名称字符串(如Thymeleaf模板名)
## 解析

原理说明

Spring MVC采用前端控制器模式,DispatcherServlet接收HTTP请求后,根据@Controller@GetMapping的映射关系将请求路由到对应方法。控制器方法处理请求后,通过Model添加数据,返回的视图名称由视图解析器转换为实际视图。

代码示例

@Controller
public class ProductController {

    // 处理 /products 的GET请求
    @GetMapping("/products")
    public String listProducts(Model model) {
        // 模拟数据获取
        List<String> products = Arrays.asList("Laptop", "Phone", "Tablet");

        // 添加数据到模型
        model.addAttribute("productList", products);

        // 返回视图名称(对应src/main/resources/templates/product-list.html)
        return "product-list";
    }
}

最佳实践

  • 语义化URL:使用名词复数形式(如/products)表示资源集合
  • 明确请求方法:优先使用@GetMapping而非通用@RequestMapping
  • 模型命名:属性名使用小写驼峰格式(如productList
  • 视图组织:将HTML模板放在src/main/resources/templates/目录

常见错误

  • 缺少注解:忘记添加@Controller导致类不被扫描
  • 路径冲突:多个方法映射相同URL路径引发异常
  • 视图解析失败:未配置模板引擎(如Thymeleaf)或视图名称拼写错误
  • 模型数据未传递:在方法内创建new Model()而非使用参数注入

扩展知识

  • 其他映射注解@PostMapping, @PutMapping, @DeleteMapping对应不同HTTP方法
  • 路径变量:使用@GetMapping("/products/{id}")@PathVariable获取URL参数
  • 请求参数:通过@RequestParam获取查询参数(如?category=electronics
  • 重定向:返回"redirect:/new-path"实现页面跳转