1.DispatcherServlet:作为前端控制器,负责接收所有的HTTP请求,并负责将请求分发给相应的处理器。
public class MyDispatcherServlet extends HttpServlet {
// 初始化和配置逻辑
@Override
public void init(ServletConfig config) throws ServletException {
// 初始化Spring MVC容器和组件
}
// 处理HTTP请求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 处理GET请求
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 处理POST请求
}
}
2.Controller:处理用户的请求,调用业务逻辑,并返回模型数据和视图。
@Controller
public class MyController {
@RequestMapping("/myRequest")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
// 处理请求的逻辑
ModelAndView modelAndView = new ModelAndView("myView");
modelAndView.addObject("attribute", "value");
return modelAndView;
}
}
3.HandlerMapping:将HTTP请求映射到Controller的具体处理方法。
public class MyHandlerMapping implements HandlerMapping {
@Override
public HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception {
// 请求映射逻辑
return new HandlerExecutionChain(new MyController());
}
}
4.HandlerAdapter:允许DispatcherServlet调用不同的处理器(Controller)。
public class MyHandlerAdapter implements HandlerAdapter {
@Override
public boolean supports(Object handler) {
// 判断是否支持给定的处理器
return handler instanceof MyController;
}
@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) {
// 调用处理器逻辑
return ((MyController) handler).handleRequest(request, response);
}
@Override
public long getLastModified(HttpServletRequest request, Object handler) {
// 返回最后修改时间
return -1;
}
}
5.ViewResolver:解析视图,将模型数据渲染到视图模板中。
public class MyViewResolver implements ViewResolver {
@Override
public View resolveViewName(String viewName, Locale locale) {
// 视图解析逻辑
return new MyView();
}
}
6.ModelAndView:包含模型数据和视图信息,用于从Controller传递数据到视图。
public class MyController {
@RequestMapping("/myRequest")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
// 处理请求的逻辑
ModelAndView modelAndView = new ModelAndView("myView");
modelAndView.addObject("attribute", "value");
return modelAndView;
}
}
7.数据绑定:自动将请求参数绑定到Java对象上。
@Controller
public class MyController {
@RequestMapping("/submitForm")
public String submitForm(@ModelAttribute MyModel myModel) {
// 处理表单提交的数据
return "resultPage";
}
}
8.异常处理器:处理应用程序中的异常。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ModelAndView handleException(Exception exception) {
// 异常处理逻辑
return new ModelAndView("errorPage");
}
}
9.消息转换器:将请求体或响应体转换为Java对象或从Java对象转换为请求体或响应体。
@Controller
public class MyController {
@RequestMapping(value = "/submitData", consumes = "application/json", produces = "application/json")
@ResponseBody
public MyModel submitData(@RequestBody MyModel myModel) {
// 处理JSON数据
return myModel;
}
}
10.主题解析器:解析用户的主题偏好,如不同的样式或布局。
public class MyThemeResolver implements ThemeResolver {
@Override
public String resolveThemeName(HttpServletRequest request) {
// 主题解析逻辑
return "myTheme";
}
@Override
public void setThemeName(HttpServletRequest request, HttpServletResponse response, String themeName) {
// 设置主题名称
}
}