Spring MVC的请求执行流程大致如下:
- 用户发送请求到
DispatcherServlet。 DispatcherServlet查询HandlerMapping找到处理请求的Controller。DispatcherServlet将请求交给HandlerAdapter执行。HandlerAdapter执行Controller(Controller可以是使用注解如@Controller,也可以是传统的Servlet)。- Controller执行完成后,返回
ModelAndView对象。 HandlerAdapter将ModelAndView返回给DispatcherServlet。DispatcherServlet将ModelAndView传递给ViewResolver解析视图。ViewResolver解析视图后返回真正的视图对象。DispatcherServlet渲染视图并响应用户。
以下是一个简化的Spring MVC请求处理流程的代码示例:
// Web.xml配置
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
// DispatcherServlet初始化时会加载应用上下文和HandlerMapping等组件
// Controller示例
@Controller
public class MyController {
@RequestMapping("/hello")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView("helloView");
mav.addObject("message", "Hello World!");
return mav;
}
}
// 在Spring MVC中,HandlerMapping负责查找处理请求的Controller和方法
// HandlerAdapter负责调用Controller并获取其返回的ModelAndView
// ViewResolver负责解析ModelAndView中的视图名,将其转换为真正的视图对象这个示例展示了如何配置DispatcherServlet和一个简单的Controller,用于处理请求并返回一个包含视图信息的ModelAndView对象。在实际的Spring MVC应用中,还会涉及到拦截器、参数绑定、数据转换等一系列复杂的过程,但核心流程大致如上所示。