Spring-webmvc

配置DispatcherServlet

2019-07-06  本文已影响0人  xzz4632

1. 配置DispatcherServlet

有两种方式配置, 一是在web.xml中配置, 一种是实现Java配置.

1.1. 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/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>

注: 如果不指定<context-param>, 将会默认加载/WEB-INF/applicationContext.xml文件.

1.2. Java配置

实现WebApplicationInitializer接口.

public class MyWebApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletCxt) {

        // 加载spring 容器
        AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
        ac.register(AppConfig.class);
        ac.refresh();

        // 创建并注册DispatcherServlet
        DispatcherServlet servlet = new DispatcherServlet(ac);
        ServletRegistration.Dynamic registration = servletCxt.addServlet("app", servlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/app/*");
    }
}

spring会自动发现实现了WebApplicationInitializer接口的实现类.

2. DispatcherServlet有哪些重要的初始化参数?

3. DispatcherServlet委托哪些类来处理请求?

3.1 HandlerMapping

处理url与controller的映射, 默认为BeanNameUrlHandlerMapping, RequestMappingHandlerMapping.

3.2 HandlerAdapter

帮助DispatcherServlet适配合适的请求处理程序.默认有`HttpRequestHandlerAdapter, SimpleControllerHandlerAdapter, RequestMappingHandlerAdapter.

3.3 HandlerExceptionResolver

用于处理请求过程中抛出的异常.默认为ExceptionHandlerExceptionResolver, ResponseStatusExceptionResolver, DefaultHandlerExceptionResolver.

3.4 ViewResolver

解析视图.默认为InternalResourceViewResolver.

3.5 RequestToViewNameTranslator

策略接口,用于在没有显式提供视图名称时将传入的HttpServletRequest转换为逻辑视图名称。默认为DefaultRequestToViewNameTranslator.

3.6 FlashMapManager

FlashMap为一个请求提供了一种方法来存储用于另一个请求的属性。当从一个URL重定向到另一个URL时,这是最常用的. 默认为SessionFlashMapManager.

3.7 ThemeResolver

解析web应用的主题.默认为FixedThemeResolver.

3.8 LocaleResolver

解析程序所在的地区和时区.用于适配国际化.默认为AcceptHeaderLocaleResolver.

3.9 MultipartResolver

解析文件上传, spring没有为其提供默认值, 因此在使用时要配置.

上一篇 下一篇

猜你喜欢

热点阅读