侧边栏壁纸
博主头像
colo

欲买桂花同载酒

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

Spring MVC中如何定义一个简单的控制器并处理GET请求?

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

题目

Spring MVC中如何定义一个简单的控制器并处理GET请求?

信息

  • 类型:问答
  • 难度:⭐

考点

控制器定义,请求映射,视图解析

快速回答

在Spring MVC中处理GET请求的基本步骤:

  1. 使用@Controller注解标记控制器类
  2. 使用@GetMapping注解定义处理GET请求的方法
  3. 返回视图名称字符串(会被视图解析器解析)
  4. 通过方法参数接收请求参数(可选)
## 解析

原理说明

Spring MVC的核心是前端控制器模式:DispatcherServlet接收所有请求,根据@Controller注解和@GetMapping等映射注解将请求路由到对应的处理方法。视图解析器(如InternalResourceViewResolver)将返回的字符串解析为实际视图(如JSP)。

代码示例

@Controller  // 1. 声明为控制器
public class WelcomeController {

    // 2. 映射GET请求
    @GetMapping("/welcome")  
    public String welcome(
        // 3. 获取请求参数(可选)
        @RequestParam(name = "name", defaultValue = "Guest") String name,  
        Model model) {

        // 4. 向模型添加数据
        model.addAttribute("username", name);  

        // 5. 返回视图名称
        return "welcome-page";  
    }
}

组件说明

  • @Controller:标记类为控制器,自动被组件扫描发现
  • @GetMapping:指定处理HTTP GET请求的路径
  • @RequestParam:绑定请求参数到方法参数
  • Model对象:用于向视图传递数据

视图配置示例(application.properties)

# 视图解析器配置
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

此时返回的"welcome-page"会解析为/WEB-INF/views/welcome-page.jsp

最佳实践

  • 保持控制器方法简洁,业务逻辑委托给Service层
  • 使用@GetMapping等专用注解代替通用@RequestMapping(method = RequestMethod.GET)
  • @RequestParam设置defaultValue避免空值异常

常见错误

  • 忘记添加@Controller注解导致控制器未被识别
  • URL路径冲突(多个方法映射相同路径)
  • 视图名称拼写错误导致找不到模板文件
  • 未配置视图解析器导致返回字符串被直接输出

扩展知识

  • 其他映射注解@PostMapping, @PutMapping, @DeleteMapping
  • 路径变量:使用@PathVariable获取RESTful风格参数(如/users/{id}
  • 重定向:返回"redirect:/new-path"实现重定向
  • 响应体:使用@ResponseBody直接返回JSON数据