SpringMVC的请求处理流程(原理)

四、SpringMVC的请求处理流程(原理)

4.1 请求处理流程

SpringMVC通过前端控制器(DispatcherServlet)拦截并处理用户请求

SpringMVC的请求处理流程(原理)_第1张图片

4.2 SpringMVC的核心组件

  • DispatcherServlet 前端控制器、总控制器
    • 由SpringMVC提供,无需工程师开发
    • 作用:接收请求,协同各组件工作,响应请求
  • HandlerMapping 处理器映射器
    • 可配置 SpringMVC提供了多个处理器映射的实现,可以根据需要进行配置
    • 也是由SpringMVC提供
    • 作用:负责根据用户请求的url,找到对应的Handler
  • HandlerAdapter 处理器适配器
    • 作用:按照处理器映射器解析的用户请求的调用链,通过适配器模式完成Handler的调用
  • Handler 处理器(控制器)
    • 由工程师根据业务的需求进行开发
    • 作用:处理请求
  • ModelAndView 视图模型
    • 作用:用于封装处理器返回的数据以及相应的视图
    • ModelAndView = Model + View
  • ViewResolver 视图解析器
    • 可配置 SpringMVC提供了多个处理器映射的实现,可以根据需要进行配置
    • 作用:对ModelAndView进行解析
  • View 视图
    • 作用:完成数据渲染

4.3 处理器映射器

不同的处理器映射器对URL处理方式也不相同,使用对应的处理器映射器之后,前端请求规则也需要发生相应的变化

SpringMVC提供的处理器映射器

  • BeanNameUrlHandlerMapping 根据控制器的ID来访问控制器
  • SipmpleUrlHandlerMapping 根据控制器配置的URL访问(默认)

配置处理器映射器:

  • 在SpringMVC的配置文件中通过Bean标签的声明处理器映射器
  • 配置BeanNameUrlHandlerMapping,根据Controller的名字进行访问

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
  • SipmpleUrlHandlerMapping ,根据Controller的路径进行访问
默认是这种方式的HandlerMapping,根据配置的路径来访问  “/aaa”相当于@RequestMapping("/aaa")
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/aaa">bookControllerprop>
        props>
    property>
bean>

4.4 视图解析器

SpringMVC提供了多个视图解析器

  • UrlBasedViewResolver
  • InternalResourceViewResolver
  • UrlBasedViewResolver 需要依赖jstl

    • 添加jstl的依赖
    
        javax.servlet
        jstl
        1.1.2
    
    
    • 配置视图解析器
    
    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        
        <property name="prefix" value="/"/>
        
        <property name="suffix" value=".jsp"/>
     bean>
    
  • InternalResourceViewResolver

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

你可能感兴趣的:(SpringMVC学习记录,java,servlet,前端)