Spring MVC 中的控制器是什么?如何定义控制器?
时间: 2024-12-15 12:20:32 浏览: 3
在Spring MVC框架中,控制器(Controller)扮演着接收用户请求并处理这些请求的角色。它是应用程序的入口点,负责将HTTP请求映射到相应的业务逻辑和服务上,并最终生成响应发送回客户端。
Spring MVC的控制器通常是基于`@Controller`注解的Java类,这些类定义了一系列处理HTTP请求的方法,每个方法对应一个特定的URL路径。这些方法通常包含以下几个步骤:
1. **@RequestMapping**: 这个注解用于指定处理哪些HTTP请求(GET、POST、PUT、DELETE等)。例如,`@RequestMapping("/users")`表示这个方法处理所有以"/users"开头的URL。
2. **处理方法**: 方法名通常是动词+名词的形式,如`listUsers()`、`saveUser(User user)`。Spring MVC会根据HTTP方法自动匹配合适的处理方法。
3. **模型数据交互**: 控制器方法内部可能会操作模型对象(Model),并将数据放入ModelAndView对象,后者进一步传递给视图(View)进行渲染。
4. **返回响应**: 如果处理完请求,控制器可以返回一个视图名称(`return "viewName"`),由Spring MVC负责渲染并返回给客户端;也可以直接返回一个HttpServletResponse对象,控制HTTP响应的状态码和内容。
定义控制器的基本流程如下:
```java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class UserController {
@GetMapping("/users")
public String getUsers(Model model) {
// 获取用户数据并填充到model
List<User> users = userService.getAllUsers();
model.addAttribute("users", users);
return "users-list";
}
@PostMapping("/users")
public String createUser(@RequestParam User newUser) {
userService.saveUser(newUser);
return "redirect:/users"; // 返回成功页面
}
}
```
阅读全文