乐趣区

关于spring:SpringMVC实现原理及详解

一、首先,咱们先来认识一下 SpringMVC 的次要组件

前端控制器(DisatcherServlet): 接管申请,响应后果,返回能够是 json,String 等数据类型,也能够是页面(Model)。

处理器映射器(HandlerMapping): 依据 URL 去查找处理器,个别通过 xml 配置或者注解进行查找。

处理器(Handler):就是咱们常说的 controller 控制器啦,由程序员编写。

处理器适配器(HandlerAdapter): 能够将处理器包装成适配器,这样就能够反对多种类型的处理器。

视图解析器(ViewResovler): 进行视图解析,返回 view 对象(常见的有 JSP,FreeMark 等)。

二、SpingMVC 的工作原理

上面是文字步骤阐明:

1、用户发送申请到前端控制器(DispatcherServlet)。

2、前端控制器申请处理器映射器(HandlerMapping)去查找处理器(Handler)。

3、找到当前处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain)。

4、前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)。

5、处理器适配器去执行 Handler。

6、处理器执行完给处理器适配器返回 ModelAndView。

7、处理器适配器向前端控制器返回 ModelAndView。

8、前端控制器申请视图解析器(ViewResolver)去进行视图解析。

9、视图解析器向前端控制器返回 View。

10、前端控制器对视图进行渲染。

11、前端控制器向用户响应后果。

三、SpingMVC 的应用
须要在 web.xml 中配置 DispatcherServlet。并且须要配置 spring 监听器 ContextLoaderListener

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>        
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 如果不设置 init-param 标签,则必须在 /WEB-INF/ 下创立 xxx-servlet.xml 文件,其中 xxx 是 servlet-name 中配置的名称。-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/springmvc-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
退出移动版