springmvc核心流程及配置

原文链接http://zhhll.icu/2020/%E6%A1%86%E6%9E%B6/springmvc/springmvc%E6%A0%B8%E5%BF%83%E6%B5%81%E7%A8%8B%E5%8F%8A%E9%85%8D%E7%BD%AE/

核心流程及配置

核心流程

  • 首先用户发送请求-------->DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为同一访问点,进行全局的流程控制

  • DispatcherServlet--------->HandlerMapping,HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象、多个HandlerInterceptor拦截器),通过策略模式,很容易添加新的映射策略

  • DispatcherServlet---------->HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配设计模式的应用,从而很容易支持很多类型的处理器

  • HandlerAdapter------------->处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理,并返回一个ModelAndView对象

  • ModelAndView的逻辑视图名-------->ViewResolver,ViewResolver将把逻辑视图解析为具体的View,通过这种策略模式,很容易更换其他视图技术

  • View------>渲染,View会根据传进来的Model模型进行渲染,此处的Model实际是一个Map

  • 返回控制权给DispatcherServlet,有DispatcherServlet返回响应给用户

配置

DispatcherServlet

DispatcherServlet充当SpringMVC的前端控制器。与其他Servlet一样,DispatcherServlet必须在Web应用程序的web.xml文件中进行配置

web.xml配置



  default
  *.html



  DispatcherServlet
  org.springframework.web.servlet.DispatcherServlet
  
  
    contextConfigLocation
    classpath:springmvc.xml
  
  1


  DispatcherServlet
  /





静态资源请求问题

因为DispatcherServlet的配置的是/,针对的是所有请求,所以对于一些的静态资源(如.js、.css)等也会经过DispatcherServlet,但是DispatcherServlet是处理动态请求的,无法处理静态资源

配置来解决,作用是处理静态资源,将在SpringMVC上下文中定义一个DefaultServletHttpRequestHandler,会对进行DispatcherServlet的请求进行筛选,如果发现是没有经过映射的请求,就将请求交给WEB服务器默认的Servlet来处理,否则交由DispatcherServlet来处理

default-servlet-name默认是default,如果不是default需要显式的进行配置(看所使用的web服务器,tomcat是default


需要注意的是,配置了之后,@RequestMapping的映射会失效,需要加上配置

HandlerMapping

spring自带了多个处理器映射实现

  • BeanNameUrlHandlerMapping 根据控制器Bean的名字将控制器映射到URL

  • ControllerBeanNameHandlerMapping 与BeanNameUrlHandlerMapping类似

  • ControllerClassNameHandlerMapping 通过使用控制器的类名作为URL基础将控制器映射到URL

  • DefaultAnnotationHandlerMapping 将请求映射给使用@RequestMapping注解的控制器和控制器方法

  • SImplerUrlHandlerMapping 使用定义在Spring应用上下文的集合将控制器映射到URL




mvc:annotation-driven配置的作用
  • 会自动注册RequestMappingHandlerMapping、RequestMappingHandlerAdater、ExceptionHandlerExceptionResolver三个bean
  • 支持使用ConversionService实例对表单参数进行类型转换
  • 支持使用@NumberFormatannotation、@DataTimeFormat注解完成数据类型的格式化
  • 支持使用@Vaild注解对JavaBean实例进行JSR 303验证
  • 支持使用@RequestBody和@ResponseBody注解

HandlerAdapter


配置视图

InternalResourceViewResolver将逻辑视图名称解析为View对象,架构该对象渲染的任务委托给Web应用程序上下文的一个模板



    
    
    

由于本身的博客百度没有收录,博客地址http://zhhll.icu

你可能感兴趣的:(springmvc核心流程及配置)