说一下 spring mvc 运行流程?

Spring MVC(Model-View-Controller)是 Spring 框架中用于构建 Web 应用程序的模块。它提供了一种清晰的分层结构,帮助开发者将业务逻辑、表示层和控制层分开。Spring MVC 的运行流程如下:

  1. 客户端请求(Client Request)

    • 用户通过浏览器向服务器发送 HTTP 请求。
  2. 前端控制器(DispatcherServlet)

    • 请求首先到达前端控制器 DispatcherServlet。它是 Spring MVC 的核心组件,负责将请求分发到合适的处理器。
    • DispatcherServlet 在 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>
    
  3. 处理器映射(Handler Mapping)

    • DispatcherServlet 使用处理器映射器(Handler Mapping)来确定哪个处理器(Controller)将处理该请求。
    • 处理器映射器从配置中查找请求 URL 对应的控制器。
  4. 处理器(Handler)

    • 一旦找到合适的处理器,DispatcherServlet 将请求发送给该处理器。处理器通常是一个控制器(Controller)。
    • 控制器中的处理方法使用 @RequestMapping 注解来映射请求 URL。
    @Controller
    public class MyController {
        @RequestMapping("/hello")
        public String handleRequest(Model model) {
            model.addAttribute("message", "Hello, World!");
            return "helloView";
        }
    }
    
  5. 处理器适配器(Handler Adapter)

    • 处理器适配器负责执行处理器方法。Spring MVC 提供了多种处理器适配器,例如 SimpleControllerHandlerAdapterRequestMappingHandlerAdapter
    • 处理器适配器调用控制器方法并处理返回值。
  6. 模型和视图(ModelAndView)

    • 控制器方法执行后返回一个 ModelAndView 对象,其中包含模型数据和视图名。
    • 模型数据用于在视图中显示,视图名用于确定使用哪个视图解析器。
  7. 视图解析器(View Resolver)

    • DispatcherServlet 使用视图解析器将逻辑视图名解析为实际的视图对象(如 JSP 文件)。
    • 视图解析器在 Spring 配置文件中配置。
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
  8. 视图渲染(View Rendering)

    • 视图对象负责将模型数据渲染到客户端,生成最终的 HTML 响应。
    • 视图对象通常是 JSP、Thymeleaf、FreeMarker 等模板引擎的实现。
  9. 响应发送(Response Sending)

    • 最终的 HTML 响应通过 DispatcherServlet 发送回客户端,用户在浏览器中看到渲染后的页面。

简化流程图

Client Request -> DispatcherServlet -> Handler Mapping -> Controller -> Handler Adapter -> ModelAndView -> View Resolver -> View -> Response

通过以上步骤,Spring MVC 实现了从接收请求到生成响应的完整流程。这个流程帮助开发者将 Web 应用程序的各个部分解耦,使得代码更易于维护和扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟主教

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值