zoukankan      html  css  js  c++  java
  • SpringBoot-Web开发

    1、SpringMVC自动配置概览

    Spring Boot provides auto-configuration for Spring MVC that works well with most applications.(大多场景我们都无需自定义配置)

    The auto-configuration adds the following features on top of Spring’s defaults:

    • Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans.
    • 内容协商视图解析器和BeanName视图解析器
    • Support for serving static resources, including support for WebJars (covered later in this document)).
    • 静态资源(包括webjars)
    • Automatic registration of Converter, GenericConverter, and Formatter beans.
    • 自动注册 Converter,GenericConverter,Formatter
    • Support for HttpMessageConverters (covered later in this document).
    • 支持 HttpMessageConverters (后来我们配合内容协商理解原理)
    • Automatic registration of MessageCodesResolver (covered later in this document).
    • 自动注册 MessageCodesResolver (国际化用)
    • Static index.html support.
    • 静态index.html 页支持
    • Custom Favicon support (covered later in this document).
    • 自定义 Favicon
    • Automatic use of a ConfigurableWebBindingInitializer bean (covered later in this document).
    • 自动使用 ConfigurableWebBindingInitializer ,(DataBinder负责将请求数据绑定到JavaBean上)

    2、简单功能分析

    2.1、静态资源访问

    1、静态资源目录

    只要静态资源放在类路径下: called /static (or /public or /resources or /META-INF/resources

    访问 : 当前项目根路径/ + 静态资源名

     

    原理: 静态映射/**。

    请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面

    2、静态资源访问前缀

    默认无前缀

     

    2.2、欢迎页支持

    • 静态资源路径下 index.html
    • 可以配置静态资源路径
    • 但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问

    2.3、自定义 Favicon

    favicon.ico 放在静态资源目录下即可。

    2.4、静态资源配置原理

    • SpringBoot启动默认加载 xxxAutoConfiguration 类(自动配置类)
    • SpringMVC功能的自动配置类 WebMvcAutoConfiguration,生效
    • 配置文件的相关属性和xxx进行了绑定。WebMvcProperties==spring.mvc、ResourceProperties==spring.resources

    3、请求参数处理

    0、请求映射

    1、rest使用与原理

    • @xxxMapping;
    • Rest风格支持(使用HTTP请求方式动词来表示对资源的操作
    • 以前:/getUser   获取用户  /deleteUser 删除用户   /editUser  修改用户   /saveUser 保存用户
    • 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户
    • 核心Filter;HiddenHttpMethodFilter

     

    所有的请求映射都在HandlerMapping中。

    • SpringBoot自动配置欢迎页的 WelcomePageHandlerMapping 。访问 /能访问到index.html;
    • SpringBoot自动配置了默认 的 RequestMappingHandlerMapping
    • 请求进来,挨个尝试所有的HandlerMapping看是否有请求信息。
    • 如果有就找到这个请求对应的handler
    • 如果没有就是下一个 HandlerMapping
    • 我们需要一些自定义的映射处理,我们也可以自己给容器中放HandlerMapping。自定义 HandlerMapping

    1、普通参数与基本注解

    1.1、注解:

    @PathVariable、@RequestHeader、@ModelAttribute、@RequestParam、@MatrixVariable、@CookieValue、@RequestBody

    1.2、Servlet API:

    WebRequest、ServletRequest、MultipartRequest、 HttpSession、javax.servlet.http.PushBuilder、Principal、InputStream、Reader、HttpMethod、Locale、TimeZone、ZoneId

    1.3、复杂参数:

    MapModel(map、model里面的数据会被放在request的请求域 request.setAttribute)、Errors/BindingResultRedirectAttributes( 重定向携带数据)ServletResponse(response)、SessionStatus、UriComponentsBuilder、ServletUriComponentsBuilder

    2、POJO封装过程

    • ServletModelAttributeMethodProcessor

    3、参数处理原理

    • HandlerMapping中找到能处理请求的Handler(Controller.method())
    • 为当前Handler 找一个适配器 HandlerAdapter; RequestMappingHandlerAdapter
    • 适配器执行目标方法并确定方法参数的每一个值



  • 相关阅读:
    网页打开速度的心理学
    UML建模——用例图(Use Case Diagram)
    漫谈干系人识别管理
    干系人分析的3个方法:除了目标用户还要考虑谁?
    计算机网络-复习笔记
    项目经理必掌握的国际项目管理知识体系结构及内容
    剑指Offer面试题:5.重建二叉树
    剑指Offer面试题:4.从尾到头打印链表
    剑指Offer面试题:3.替换空格
    剑指Offer面试题:2.二维数组中的查找
  • 原文地址:https://www.cnblogs.com/albertrui/p/15008908.html
Copyright © 2011-2022 走看看