SpringMVC的执行流程

1. 开发步骤

1.1 定义前端控制器

Web应用是基于请求/响应架构的应用,现今的MVC Web框架,都需要在web.xml文件中配置核心Servlet / Filter。这里需要定义前端控制器DispatcherServlet 来拦截所有的用户请求。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <!-- servlet名称 -->
    <servlet-name>springMVC</servlet-name>
    <!-- servlet 对应的java类 -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 参数设置 -->
    <init-param>
      <!-- 设置springmvc配置文件的路径 -->
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/springmvc-config.xml</param-value>
    </init-param>
    <!-- 设置web应用启动时,该servlet的启动优先级,越小越高-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <!-- 请求对应的servlet名称 -->
    <servlet-name>springMVC</servlet-name>
    <!-- 监听的范围 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

1.2 处理用户请求的Handle类

这一部分是所有MVC框架中必不可少的一部分,可以通过实现Controller接口或使用@Controller注解。负责处理前端控制器发送过来的请求。

1.3 配置Handle

可以在springmvc配置文件中,配置自定义的Handle类:

<bean name="/hello" class="com.controller.Hello"/>

也可以让框架自动扫描加了注解 @Controller 的类,配置:

    <context:component-scan base-package="com.controller"/>
    <mvc:annotation-driven/>

1.4 视图

jsp、html等

1.5 一个demo的目录结构

在这里插入图片描述

2. 运行流程

在这里插入图片描述

  1. 用户向服务器发送请求
  2. DispatcherServlet 拦截并解析用户发来的请求,得到URL(请求资源标识符),根据该URL调用HandlerMapping获取该Handler配置的所有相关对象,这些对象会被封装到HandlerExecutionChain对象当中返回。
  3. DispatcherServlet会根据上一步得到的Handler选择一个HandlerAdapter,以便调用实际的开发人员定义的处理请求方法。
  4. 提取请求中的模型数据后,开始执行Handler中的方法。在填充Handler方法的形参过程中,根据配置,spring将做一些额外的工作:
    4.1 消息转换, 将请求消息(如JSON、XML等数据)转换成一个对象,将对象转换为指定的响应信息。
    4.2 数据转换,对请求消息进行数据转换,如String -> Integer、Double等
    4.3 数据格式化,对请求消息进行数据格式化,如将字符串转换成格式化数字或格式化日期等。
    4.4 数据验证, 验证数据的有效性,验证结果存储到BindingResult或Error中。
  5. Handler执行完成后,向DispatcherServlet返回一个ModelAndView对象
  6. 根据ModelAndView选择一个ViewResolver,并返回给DispatcherServlet
  7. ViewResolver结合Model和View来渲染视图
  8. 将渲染结果返回给客户端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值