Spring Web MVC(一)|前端控制器-DispatcherServlet

Spring MVC Web官方参考文档

1 Spring Web MVC

Spring Web MVC来源于spring-webmvc模块

1.1 DispatcherServlet前端控制器

处于中央Servlet的DispatcherServlet,提供了一种用于请求处理的共享算法,而实际的工作由可配置的委托组件来执行。支持多种工作流程。

DispatcherServlet使用spring的配置来发现它需要的请求映射、视图解析、异常处理、委托组件及其他

以下是在web.xml配置中注册、初试化DispatcherServlet:

<web-app>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
// springmvc配置文件
        <param-value>/WEB-INF/app-context.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>app</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>app</servlet-name>
        <url-pattern>/app/*</url-pattern>
    </servlet-mapping>

</web-app>

1.1.1 应用程序上下文层次结构

上下文层次结构
Root WebApplicationContext通常包含基础结构bean,在多个DispatcherServlet(或其他Servlet)实例之间共享,每个实例还有其自己的子Servlet WebApplicationContext配置。

在web.xml配置应用程序上下文层次结构

<web-app>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <!-- 根上下文配置文件 -->
        <param-value>/WEB-INF/root-context.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>app1</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!-- servlet实例子上下文配置文件 -->
            <param-value>/WEB-INF/app-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>app1</servlet-name>
        <url-pattern>/app1/*</url-pattern>
    </servlet-mapping>

</web-app>

如果不需要应用程序上下文层次结构,则应用程序可以仅配置“根”上下文,并将contextConfigLocationServlet参数保留为空。

1.1.2 特殊类型bean-处理请求、渲染响应

在DispatcherServlet中特殊类型bean用于处理请求渲染响应

特殊类型bean指带有内置约束,但可以自定义属性、扩展、替换它们。如:

特殊类型bean 说明
HandlerMapping 请求映射到处理程序以及用于预处理和后处理的拦截器列表 。 映射基于某些标准,其细节因HandlerMapping实现类而异。两个主要HandlerMapping实现类:RequestMappingHandlerMapping (支持带@RequestMapping注释的方法)和SimpleUrlHandlerMapping(维护URI路径模式到处理程序的显式注册)。
HandlerAdapter DispatcherServlet无论如何调用处理程序,都可以使调用映射到请求的处理程序。例如,调用带注解的控制器需要解析注,HandlerAdapter主要目的是保护DispatcherServlet这些细节。<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值