Spring MVC 学习(一):应用开发步骤&执行流程

(尊重劳动成果,转载请注明出处:https://yangwenqiang.blog.csdn.net/article/details/88090742冷血之心的博客)

目录

Spring MVC应用的开发步骤:

总结:

Spring MVC执行流程:

总结:


       之前在学生时代也学习了解过一些框架,包括Spring,Struts2,Hibernate以及MyBatis都有过接触,也在实习的时候简单使用过Spring和MyBatis,但是了解的都比较浅。从这篇博客开始,我将重新记录自己在学习Spring MVC过程,我们先从Spring MVC应用的开发步骤和执行流程来开始吧~ (PS. 本篇博客的阅读需要读者具备一定的Web框架基础,因为本文并不是一篇手把手教程,更多的是做为笔记供大家参考查阅。)

Spring MVC应用的开发步骤:

(1)在web.xml文件中定义前端控制器 DispatcherServlet 来拦截用户请求。

由于Web应用是基于请求/响应架构的应用,所以不管哪个MVC Web框架的应用,都需要在web.xml中配置该框架的核心Servlet或Filter,这样才可以让该框架加如到Web应用中。 Spring MVC应用的web.xml需要加如的配置如下:

<!-- Spring MVC配置 -->
<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
    </servlet-class>

    <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,
名称为[<servlet-name>]-servlet.xml,如spring-config.xml -->

    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-config.xml</param-value>
    </init-param>
    
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- 拦截所有请求 -->
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

(2) 如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。Get请求则不需要JSP页面也行。

(3) 定义处理用户请求的Handle类,可以实现Controller接口或者使用@Controller注解。

       前端控制器DispatcherServlet是MVC模式中的 C,负责接收请求,并且分发给对应的Handle(实现了Controlle接口的Java类),每一个handle负责调用后台的业务逻辑处理请求。工作流程如下:

  • 前端控制器接收到请求,进行简单预处理(例如. 解析,封装参数等)
  • 通过反射来创建Controller实例
  • 调用Controller的指定方法来处理用户请求

前端控制器拦截到用户请求后,如何创建指定的Controller接口实例呢?

  • 在xml配置文件中可以配置每一个请求和XXXController的对应关系
  • 使用注解@Controller和@RequestMapping(value="/xxx")来描述每个请求对应的方法

总结:

在Spring MVC框架中,控制器实际上由两个部分组成,即DispatcherServlet和Controller

(4) 配置handle。

      我们可以在xml配置文件中配置请求与Controller的对应关系,从而让前端控制器根据配置来创建对应的Controller实例,调用对应的业务控制方法。

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

在Spring2.5之后,可以通过注解来配置Handle:

@Controller
public class HelloController{
    @RequestMapping(value="/hello")
    public ModelAndView hello(){
        ....
    }
}

(5) 编写视图资源:

    当handle处理用户请求结束后,通常会返回一个ModelAndView对象,该对象中应该包含返回的视图名或者视图名和模型,这个视图名就代表需要显示的物理视图资源。如果Handle需要把一些数据传给视图资源,则可以通过模型队形。

总结:

       按照上边的五个步骤,即可完成一个Spring MVC处理流程的开发,也就是可以执行一次完整的请求--响应的过程。

Spring MVC执行流程:

     我们通过一幅图来说明下 请求--响应的完整流程:

      spring mvc是一个基于请求驱动的Web框架,使用了“前端控制器”模型来进行设计,再根据“请求映射规则”分发给相应的页面控制器进行处理。完整的执行流程如下:

(1) 用户向服务器发送请求,请求被前端控制器DispatcherServlet 截获。

(2) 前端控制器对请求URL进行解析,得到URI,然后根据该URI,调用HandlerMapping 获得该Handler配置的所有相关的对象,包括Handler对象以及其对应的拦截器,这些对象会被封装到一个HandlerExceptionChain对象当中返回。

(3) 前端控制器根据获得的Handler,选择一个合适的HandlerAdapter.。handlerAdapter会被用于处理多种Handler,调用Handler实际处理请求的方法。

(4) 提取请求中的模型数据,开始执行Handler(Controller),在填充Handler的入参过程中,有如下的工作需要做:

  • 消息转换:将请求消息(json,xml)转换为一个对象,将对象转换为指定的响应消息。
  • 数据转换
  • 数据格式化
  • 数据验证

(5) Handler执行结束后,向前端控制器返回一个ModelAndView对象,该对象中应该包含视图名或者视图名和模型

(6) 根据返回的ModelAndView对象,选择一个合适的ViewResolver(视图解析器)返回给DispatcherServlet

(7) ViewResolver结合Model和View来渲染视图

(8) 将视图渲染结果返回给客户都按。

总结:

       DispatcherServlet、HandlerMapping、HandlerAdapter,ModelAndView、ViewResolver、View多个对象的协同工作,完成了Spring MVC请求--响应的整个工作流程。

如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以进群366533258一起交流学习哦~

本群给大家提供一个学习交流的平台,内设菜鸟Java管理员一枚、精通算法的金牌讲师一枚、Android管理员一枚、蓝牙BlueTooth管理员一枚、Web前端管理一枚以及C#管理一枚。欢迎大家进来交流技术。

发布了262 篇原创文章 · 获赞 2004 · 访问量 191万+

猜你喜欢

转载自blog.csdn.net/qq_25827845/article/details/88090742