zoukankan      html  css  js  c++  java
  • Springmvc原理

     

    1、 用户发送请求至前端控制器DispatcherServlet
    
    2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器查找Handler。
    
    3、 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
    
    4、 DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
    
    5、 HandlerAdapter调用处理器Handler
    
    6、 Handler执行完成返回ModelAndView
    
    7、 HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet
    
    8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器,ViewReslover根据逻辑视图名解析View
    
    9、 ViewReslover返回View
    
    10、 DispatcherServlet对View进行渲染视图(即将模型数据填充至request域)。
    
    11、 DispatcherServlet响应用户

     

    n DispatcherServlet前端控制器(springmvc框架提供)
    
    作用:接收请求,响应结果
    
    有了前端控制器减少各各组件之间的耦合性,前端控制器相关于中央调度器。
    前端处理器:DispatcherServlet
     
    
    n HandlerMapping 处理器映射器(springmvc框架提供)
    
    作用:根据url查找Handler,比如:根据xml配置、注解方式查找Handler

       <!-- 非注解映射器-->BeanNameUrlHandlerMapping:使用BeanNameUrlHandlerMapping,表示将定义的Bean(Handler)名字作为请求的url

      simpleUrlHandlerMapping:是BeanNameUrlHandlerMapping的增强版本,它可以将url和处理器bean的id进行统一映射配置。

     

    <!-- 注解处理器映射器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

    n HandlerAdapter处理器适配器(springmvc框架提供)
    
    作用:执行Handler
    
    不同类型的Handler有不同的HandlerAdapter,好处可以通过扩展HandlerAdapter支持更多类型的Handler
    <!-- 非注解适配器 -->SimpleControllerHandlerAdapter:只要实现了Controller接口的bean,SimpleControllerHandlerAdapter都可以去执行
    
    

    HttpRequestHandlerAdapter:只要实现了HttpRequestHandler接口的bean,HttpRequestHandlerAdapter都可以去执行

    <!-- 注解处理器适配器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    n Handler处理器(由程序员开发) 作用:业务处理 实现开发中又称为controller即后端控制器 Handler的开发按照HandlerAdapter的接口规则去开发。 Handler处理后的结果是ModelAndView,是springmvc的底层对象,包括 Model和view两个部分。 view中只包括一个逻辑视图名(为了方便开发起一个简单的视图名称)。 n ViewReslover视图解析(springmvc框架提供) 作用:根据逻辑视图名创建一个View对象(包括真实视图物理地址) 针对不同类型的view有不同类型的ViewReslover,常用的有jsp视图解析器即jstlView n View视图(由程序员开发jsp页面) 作用:将模型数据填充进来(将model数据填充到request域)显示给用户 view是一个接口,实现类包括:jstlView、freemarkerView,pdfView...

     

     

    springmvc.xml中配置了
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 商品信息第一个contorller,通过SimpleControllerHandlerAdapter适配器执行 --> <bean id="itemsController" name="/itemsList1.action" class="cn.itcast.springmvc.controller.ItemsController1"></bean> <!-- 处理器映射器,所有的映射器实现 HandlerMapping --> <!-- 根据bean的name进行查找Handler 将action的url配置在bean的name中 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- 另外一个处理器映射器,可以针对Handler集中配置url --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/itemsList1-1.action">itemsController</prop> <prop key="/itemsList1-2.action">itemsController</prop> </props> </property> </bean> <!-- 处理器适配器 所有处理器适器都实现 了HandlerAdapter接口 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- ViewResolver视图解析器,解析jsp视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 指定视图路径前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 指定视图路径后缀 --> <property name="suffix" value=".jsp" /> </bean> </beans>

     

     

     

     

  • 相关阅读:
    小组件
    rabbitMQ操作
    爬虫
    爬虫相关
    HTTP相关
    Python基本数据类型
    机器学习技法 之 支持向量回归(SVR)
    机器学习基石 之 线性回归(Linear Regression)
    机器学习技法 之 径向基函数网络(RBF Network)
    各个常用的排序算法的适用场景详细分析
  • 原文地址:https://www.cnblogs.com/wwwzzz/p/8301515.html
Copyright © 2011-2022 走看看