在Spring MVC框架里,控制器(Controller)承担什么职责?请说明在项目中定义一个控制器类的具体做法与关键注解。
考察说明
考查对Spring MVC控制器角色定位及基础定义方式的理解。
回答思路
- 【回答框架 1】Controller是Spring MVC中处理HTTP请求的核心组件,它接收请求、调用业务逻辑并返回模型与视图或响应体,负责请求分发与流程控制。
- 【回答框架 2】定义一个Controller通常使用@Controller注解标注类,配合@RequestMapping或其衍生注解(如@GetMapping、@PostMapping)映射URL与方法,方法返回值对应视图名或直接输出响应。
- 【回答框架 3】若用于RESTful接口,常用@RestController组合注解,它包含@Controller与@ResponseBody,使方法直接返回JSON等数据。
- 【回答框架 4】控制器中的方法参数可通过@RequestParam、@PathVariable、@RequestBody等注解绑定请求参数,返回ModelAndView、String或对象等。
- 【回答框架 5】还需在配置中启用组件扫描或通过配置类扫描包含控制器的包,确保Spring容器能识别并注册该Bean。
- 【关键点 1】@Controller用于传统MVC控制器,@RestController用于REST API,后者是前者的扩展。
- 【关键点 2】通过@RequestMapping系列注解映射HTTP方法与URL。
- 【关键点 3】控制器方法参数绑定依赖注解如@PathVariable、@RequestParam。
- 【关键点 4】Spring通过组件扫描自动发现并注册控制器Bean,需确保包路径正确。
- 【关键点 5】控制器本身不直接处理数据访问,应调用服务层进行业务处理。
- 【易错点 1】混淆@Controller与@RestController,错误地导致返回字符串被当作视图名解析。
- 【易错点 2】忘记添加组件扫描或扫描包范围错误,导致控制器未被注册,请求404。
- 【易错点 3】控制器方法返回视图名时,未配置视图解析器会报错,反之返回JSON时需确保有消息转换器。