zoukankan      html  css  js  c++  java
  • springMVC执行流程

    刚学习springMVC,现总结一下其执行流程如下:

    第一步:发起请求到前端控制器(DispatcherServlet)

    第二步:前端控制器请求HandlerMapping(处理器映射器)查找Handler,如果设置有拦截器,也会查找对应的handler
    可以根据xml配置、注解进行查找

    第三步:处理器映射器HandlerMapping向前端控制器返回Handler

    第四步:前端控制器调用处理器适配器(HandlerAdaptor)去执行Handler

    第五步:处理器适配器执行Handler;

    第六步:Handler执行完成后给适配器返回ModelAndView;

    第七步:处理器适配器向前端控制器返回ModelAndView
    ModelAndView是springmvc框架的一个底层对象,包括Model和View

    第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析
    根据逻辑视图名解析成真正的视图(jsp)

    第九步:视图解析器向前端控制器返回View

    第十步:前端控制器进行视图渲染
    视图渲染将模型数据(在ModelAndView对象中)填充到request域中

    第十一步:前端控制器向用户响应结果


    重要组件:
    1、前端控制器DispatcherServlet(不需要程序员开发)
    作用:接收请求,响应结果,相当于转发器,减少了其它组件之间的耦合度

    2、处理器映射器HandlerMapping(不需要程序员开发)
    作用:根据请求url查找Handler

    3、处理器适配器(HandlerAdapter)(不需要程序员开发)
    作用:按照特定的规则(HandlerAdapter要求的规则)去执行Handler
    注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以执行Handler;
    (Handler也就是Controller中的各个action方法,需要程序员开发)

    4、视图解析器ViewResolver(不需要程序员开发)
    作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

    5、视图(View)(需要程序员开发)
    View是一个接口,实现类支持不同的View类型(jsp,freemarker,excel,pdf等)

    配置:
    1、配置前端控制器DispatcherServlet,在web.xml中配置(待续)

    2、常用的视图解析器:

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/"/>
      <property name="suffix" value=".jsp"/>
    </bean>

    如果action方法返回的是真实路径如return "/success/index.jsp";上述视图解析器也可以不进行配置,但是如果返回的不是真实路径,
    如:return "index";则必须配置

    <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
        <property name="basenames">
            <array>
                <value>views</value>
            </array>
        </property>
    </bean>            

    此外还有ResourceBundleViewResolver,basenames设置classpath下的xxx.properties文件,
    默认views,可以匹配"views", "views_en_au" and "views_de",可以指定不同类型的视图。

    未完待续

  • 相关阅读:
    Struts2SpringHibernate整合示例,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)
    Java实现蓝桥杯勇者斗恶龙
    Java实现 LeetCode 226 翻转二叉树
    Java实现 LeetCode 226 翻转二叉树
    Java实现 LeetCode 226 翻转二叉树
    Java实现 LeetCode 225 用队列实现栈
    Java实现 LeetCode 225 用队列实现栈
    Java实现 LeetCode 225 用队列实现栈
    Java实现 LeetCode 224 基本计算器
    Java实现 LeetCode 224 基本计算器
  • 原文地址:https://www.cnblogs.com/xiaoxionganna/p/9382766.html
Copyright © 2011-2022 走看看