谈及Spring MVC框架之前,我们先了解一下MVC框架是什么:
MVC是一个经典的设计模式,我们可以把他理解为将整个Web应用程序分为三部分:
SpringMVC是Spring的一个模块,是一个基于MVC设计模式的web框架。
这里我们用一张图来理解它的工作机制
在Spring MVC中,处理器(Controller)是应用程序的核心组件之一,它负责处理用户的请求,执行业务逻辑,并返回适当的响应。处理器的开发通常涉及以下几个方面:
处理器通常是一个普通的Java类,被标记为控制器组件。Spring MVC中的控制器类使用@Controller
注解标识。
示例:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MyController {
@RequestMapping(value = "/greet", method = RequestMethod.GET)
@ResponseBody
public String greet() {
return "Hello, World!";
}
}
处理器方法负责接收请求,处理数据,并返回响应。方法可以使用各种注解来映射请求的URL、HTTP方法等。
@RequestMapping
:映射请求路径到控制器方法,可以指定请求的HTTP方法(GET、POST等)。@GetMapping
:用于处理HTTP GET请求,@RequestMapping(method = RequestMethod.GET)
的简写。@PostMapping
:用于处理HTTP POST请求,@RequestMapping(method = RequestMethod.POST)
的简写。示例:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestBody;
@Controller
public class MyController {
@GetMapping("/hello")
@ResponseBody
public String hello(@RequestParam(name = "name", defaultValue = "Guest") String name) {
return "Hello, " + name;
}
@PostMapping("/submit")
@ResponseBody
public String submit(@RequestBody String data) {
return "Received: " + data;
}
}
处理器方法可以通过方法参数获取请求参数。Spring MVC支持多种方式来绑定请求参数到方法参数。
@RequestParam
:绑定请求参数到方法参数。@PathVariable
:绑定URL模板中的变量到方法参数。@RequestBody
:将请求体的内容绑定到方法参数(通常用于处理JSON或XML数据)。示例:
import org.springframework.web.bind.annotation.PathVariable;
@Controller
public class MyController {
@GetMapping("/users/{id}")
@ResponseBody
public String getUser(@PathVariable("id") int userId) {
// 处理用户ID并返回用户信息
return "User ID: " + userId;
}
}
处理器方法可以返回不同类型的结果,Spring MVC根据返回值的类型来决定如何处理响应。
@ResponseBody
注解的方法会将返回的数据直接写入HTTP响应体中(通常用于REST API)。示例:
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MyController {
@GetMapping("/welcome")
public ModelAndView welcome() {
ModelAndView modelAndView = new ModelAndView("welcome");
modelAndView.addObject("message", "Welcome to Spring MVC!");
return modelAndView;
}
}
在处理器中,可以使用@ExceptionHandler
注解处理特定的异常,并返回友好的错误信息。也可以使用@ControllerAdvice
进行全局异常处理。
示例:
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public String handleException(Exception ex) {
return "An error occurred: " + ex.getMessage();
}
}
在下一章节,我们将会详细学习SpringMVC框架中处理器Controller中的具体内容。