zoukankan      html  css  js  c++  java
  • Spring MVC 详解(二)

    前端控制器

    web.xml中配置:

    springmvc.xml中配置springmvc架构三大组件(处理器映射器、适配器、视图解析器)

    处理器映射器

    springmvc.xml中配置:

    BeanNameUrlHandlerMapping: 根据请求urlXXXX.action)匹配spring容器bean的 name

    找到对应的bean(程序编写的Handler

     

    <!-- 根据beanname进行查找Handler actionurl配置在beanname中 -->

     

    <bean

     

    class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

     

    所有处理器映射器都实现HandlerMapping接口。

    处理器适配器

    springmvc.xml配置:

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 

    所有的适配器都是实现了HandlerAdapter接口。

    程序编写Handler根据适配器的要求编写。

    SimpleControllerHandlerAdapter适配器要求:

    通过supports方法知道Handler必须要实现哪个接口:

     

     Handler编写

    需要实现Controller接口:

     配置Handler

    springmvc.xml配置Handlerspring管理Handler

     配置视图解析器

     

    配置视图解析,能够解析jsp视图:

     

     

    注解映射器和适配器

    注解映射器

    spring3.1之前默认加载映射器是

    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping,

    3.1之后要使用:

    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

     

    springmvc.xml中配置RequestMappingHandlerMapping:

     

    使用RequestMappingHandlerMapping需要在Handler 中使用@controller标识此类是一个控制器,使用@requestMapping指定Handler方法所对应的url

     注解适配器

    spring3.1之前默认加载映射器是

    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter,

    3.1之后要使用:

    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

    RequestMappingHandlerAdapter,不要求Handler实现任何接口,它需要和RequestMappingHandlerMapping注解映射器配对使用,主要解析Handler方法中的形参。

     

    注解开发Hanlder

    配置Handler

    建议使用组件扫描,组件扫描可以扫描@Controller@Service@component@Repsitory

    小结

    DispatcherServlet:前端控制器,相当于中央调度器,可以降低组件之间的耦合度。

    HandlerMapping:处理器映射器,负责根据url查找Handler

    HandlerAdapter:处理器适配器,负责根据适配器要求的规则去执行处理器。可以通过扩展适配器支持不同类型的Handler

    viewResolver:视图解析器,根据逻辑视图名解析成真正的视图,

    真正视图地址==前缀+逻辑视图名+后缀

     

  • 相关阅读:
    select移动选项
    jFinal+AngularJs未来javaEE开发的趋势——程序员的福音 .
    MVC框架PK:Angular、Backbone、CanJS与Ember
    错误 1093 You can't specify target table 'table name' for update in FROM clause
    Angularjs开发一些经验总结
    需求调研的步骤、方法
    MyEclipse如何跟踪调试
    需求入门: 软件需求的三个层次
    JAVA的Random类(转)
    Java中从[1,36]随机生成7个不重复的数字,放入一个数组中
  • 原文地址:https://www.cnblogs.com/yuanfuqiang/p/5823773.html
Copyright © 2011-2022 走看看