Handler 一般就是指 Controller,Controller 是 Spring MVC 的核心组件,负责处理请求,返回响应。
Spring MVC 允许使用多种类型的处理器。不仅仅是标准的@Controller
注解的类,还可以是实现了特定接口的其他类(如 HttpRequestHandler 或 SimpleControllerHandlerAdapter 等)。这些处理器可能有不同的方法签名和交互方式。
HandlerAdapter 的主要职责就是调用 Handler 的方法来处理请求,并且适配不同类型的处理器。HandlerAdapter 确保 DispatcherServlet 可以以统一的方式调用不同类型的处理器,无需关心具体的执行细节。
适配器模式(Adapter Pattern)的作用是将一个接口转换为客户端希望的另一个接口,以使原本不兼容的接口可以协同工作。适配器模式主要用于接口不兼容的情况,通过适配器来桥接不同的接口,使得系统更灵活。
假设你有两个不同的 Controller,一个是传统实现接口的 Controller,另一个是基于注解的 Controller:
java
复制代码
// 旧式 Controller
public class OldController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
return new ModelAndView("oldView");
}
}
// 基于注解的 Controller
@Controller
public class NewController {
@RequestMapping("/new")
public String handleRequest(Model model) {
model.addAttribute("attribute", "value");
return "newView";
}
}
Spring 通过不同的 HandlerAdapter
适配这两种控制器,使得它们都能被 DispatcherServlet
正常调用。
不用再处理 View 了,而是直接将结果序列化成 JSON 格式,并且写入 HttpServletResponse 的输出流中。