小村村长

导航

Spring MVC的核心组件

在SpringMVC的运行流程中我们可以发现DispatcherServlet负责整体调度工作,而实际工作的是三大组件

1.HandlerMapping 【处理器映射器】

作用: 根据请求路径找到对应的方法(处理器)
在服务器启动,SpringMVC的配置文件加载时,会扫描指定的包,当扫描到@RequestMapping注解时,会建立请求路径与当前方法(处理器)的对应关系
    
处理器: Handler
    指的就是我们自己编写的java代码(web层的Controller)

2.HandlerAdapter【处理器适配器】

作用: 反射调用方法执行
处理器的实现方式有多种(把一个普通类变成处理器的方式,一旦一个类变成了处理器,SpringMVC就可以使用反射技术调用此方法执行了):
	方式1: 自定义一个类,实现Controller接口,重写handleRequest方法
        SimpleControllerHandlerAdapter
    方式2: 自定义一个类,实现HttpRequestHandler接口,重写handleRequest方法
        HttpRequestHandlerAdapter
    方式3: 自定义一个类,在方法上添加@RequestMapping注解
        RequestMappingHandlerAdapter
当根据请求路径找到对应的类或方法时,判断(适配)当前处理器的实现方式,并调用指定的处理器适配器类执行,处理器适配器类的执行,就可以让方法执行了.
        if(处理器实现了 Controller接口){
            // 调用处理接口类的处理器适配器执行
        }else if(处理器实现了 HttpRequestHandler接口){
            // 调用处理接口类的处理器适配器执行
        }else if(处理器类上面有注解){
            // 调用处理注解的处理器适配器执行
        }

3.viewResolver【视图解析器】

作用: 根据逻辑视图匹配到真正的视图,并将物理视图返回给前端控制器(核心控制)(根据返回的视图名称,找到具体的视图位置)

关于视图解析器,有几个配置很重要 

@RequestMapping("/hello") 
public String hello(){ 
    System.out.println("Hello world"); 
    //默认代表转发,相当于forward:hello.jsp 
    //可以使用 redirect:改为重定向 
    return "success"; 
}
<!-- 配置视图的前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <!--前缀--> 
    <property name="prefix" value="/WEB-INF/" /> 
    <!--后缀--> 
    <property name="suffix" value=".jsp" /> 
</bean>

3. 源码分析

当服务器启动时,SpringMVC框架的加载流程:
	1.服务器启动,只会加载项目的web.xml(web项目的核心配置文件)
    2.创建前端控制器对象(核心控制器),DispatcherServlet
    3.解析SpringMVC的配置文件
    4.执行DispatcherServlet的初始化方法,完成初始化操作
        根据配置文件的配置扫描包,建立请求路径与方法的对应关系
        创建处理器映射器对象存放路径与方法的对应关系
    5.初始化处理器适配器
    6.初始化视图解析器

posted on 2022-02-15 00:03  小村村长  阅读(174)  评论(0编辑  收藏  举报