springmvc简介及执行流程

1 springmvc简介
        SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于SpringFrameWork的后续产品。
Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring
的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。SpringMVC已经成为目前最主流的MVC框架之一,并且随着Spring3.0的发布,全面超越Struts2,成
为最优秀的MVC框架。它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。


2 springmvc组件
   2.1 DispatcherServlet:前端控制器
用户请求到达前端控制器,它就相当于 mvc 模式中的 c, dispatcherServlet 是整个流程控制的中心,由
它调用其它组件处理用户的请求, dispatcherServlet 的存在降低了组件之间的耦合性。
  2.2 HandlerMapping:处理器映射器
HandlerMapping 负责根据用户请求找到 Handler 即处理器, SpringMVC 提供了不同的映射器实现不同的
映射方式,例如:配置文件方式,实现接口方式,注解方式等。
   2.3 HandlAdapter:处理器适配器
通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理
器进行执行.
  2.4 Handler:处理器
开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由
Handler 对具体的用户请求进行处理。
  2.5 View Resolver:视图解析器
View Resolver 负责将处理结果生成 View 视图, View Resolver 首先根据逻辑视图名解析成物理视图名
即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户
  2.6 View:视图
SpringMVC 框架提供了很多的 View 视图类型的支持,包括: jstlView、 freemarkerView、 pdfView
等。我们最常用的视图就是 jsp。
一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开
发具体的页面.
3  springmvc执行流程
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找 Handler (可以根据xml配置、注解进行查找)
第三步:处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor拦截器对象),通过这种策略模式,很容易添加新的映射策略
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器HandlerAdapter将会根据适配的结果去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView (ModelAndView是springmvc框架的一个底层对象,包括 Model和view)
第八步:前端控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图(jsp)),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request域)
第十一步:前端控制器向用户响应结果

4 springmvc开发环境搭建
  4.1  配置前端控制器
[XML]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<!--配置前端控制器-->
   < servlet >
     < servlet-name >dispatcherServlet</ servlet-name >
     < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class >
     <!--加载springmvc.xml配置文件-->
     < init-param >
       < param-name >contextConfigLocation</ param-name >
       < param-value >classpath:springmvc.xml</ param-value >
     </ init-param >
     <!--启动服务器,创建该servlet-->
     < load-on-startup >1</ load-on-startup >
   </ servlet >
   < servlet-mapping >
     < servlet-name >dispatcherServlet</ servlet-name >
     < url-pattern >/</ url-pattern >
   </ servlet-mapping >

其中url-pattern配置说明如下:
/:表示拦截所有,但不包含jsp
/*:表示拦截所有,包含jsp
.do: 表示拦截后缀为.do的请求
.action:表示拦截后缀为.action的请求
4.2 配置springmvc.xml
[XML]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<!--开启注解扫描,只扫描Controller注解-->
    < context:component-scan base-package = "cn.itcast" >
        < context:include-filter type = "annotation" expression = "org.springframework.stereotype.Controller" />
    </ context:component-scan >
 
    <!--配置的视图解析器对象-->
    < bean id = "internalResourceViewResolver" class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
        < property name = "prefix" value = "/WEB-INF/pages/" />
        < property name = "suffix" value = ".jsp" />
    </ bean >
 
    <!--过滤静态资源-->
    < mvc:resources location = "/css/" mapping = "/css/**" />
    < mvc:resources location = "/images/" mapping = "/images/**" />
    < mvc:resources location = "/js/" mapping = "/js/**" />
 
    <!--开启SpringMVC注解的支持-->
    < mvc:annotation-driven />

其中配置 <mvc:annotation-driven/>相当于帮我们默认配置了处理器映射器和处理器适配器
 
 
 
 
 
发布了667 篇原创文章 · 获赞 6 · 访问量 9043

猜你喜欢

转载自blog.csdn.net/heima201907/article/details/104381943