Multiple application context, multiple dispatcher servlets?

后端 未结 2 1657
小鲜肉
小鲜肉 2020-12-05 03:24

Until now I used to think that a web-application can have only one dispatcher-servlet which we define in web.xml

  • Am I right in th
2条回答
  •  执念已碎
    2020-12-05 03:56

    What is a situation we might need this in ?

    OR
    Advantages of multiple dispatcher servlets OR
    Why we need multiple dispatcher servlets?

    Simple answer is to have DispatcherServlet's functionality in several forms

    Dispatcher servlet functionality


    • Dispatcher Servlet uses HandlerMapping implementation to control the routing of requests to handler objects. Default is BeanNameUrlHandlerMapping and RequestMappingHandlerMapping.
    • It's view resolution strategy can be specified via a ViewResolver implementation, resolving symbolic view names into View objects. Default is InternalResourceViewResolver.
    • It's exception resolution strategy can be specified via a HandlerExceptionResolver, for example mapping certain exceptions to error pages.
    • It's strategy for resolving multipart requests is determined by a MultipartResolver implementation.
    • It's locale resolution strategy is determined by a LocaleResolver.
    • It's theme resolution strategy is determined by a ThemeResolver.


    I will try to explain some of the functionalities provided by DispatcherServlet

    Declaring Multiple dispatcher servlets
    Consider we have two dispatcher servlets(DS) where DS1, DS2 are configured with different url patterns(**.simple, **.beanName) and they uses different dispatcher servlet configuration provided as given below.

    DispatcherServlet     - simpleUrlHandlerDispatcherServlet
    contextConfigLocation - /WEB-INF/simpleUrlHandlerMapping.xml
    *.simple
    
    DispatcherServlet     - beanNameUrlHandlerDispatcherServlet
    contextConfigLocation - /WEB-INF/beanNameUrlHandlerMapping.xml
    *.beanName
    

    Advantage 1: We can have different HandlerMapping for different set of URL

    DS1 bean name url handler mapping configuration

    
    
    

    DS2 simple url handler mapping configuration

    
        
            
                simpleHello
                simpleHi
            
        
    
    

    Advantage 2: We can have different view resolver for different set of URL's.

    InternalResourceViewResolver for DS1
    where it deals with only prefix + returned String + suffix.
    TilesViewResolver for DS2
    its implementation provided by apache tiles which is a layout/skeleton based plugin high level functionality as given below.
    Or if we use TilesViewResolver with different layout for different set of URL's
    anonymous user - different layout
    logged in user - different layout

    Advantage 3: We can have different theme resolver for different set of URL's.
    These resolver continuously monitors cookie/session to resolve theme and serves stylesheet/theme qualified (as given in below image). Below given just an example for outcome of CookieThemeResolver.
    Note: This is not about theme configuration but about theme resolver configuration.

    Advantage 4: We can have different locale resolver for different set of URL's.
    These resolver continuously monitors cookie/session/accept-header to resolve locale and loads application message qualified(as given in below image). Below given just an example for outcome of CookieLocaleResolver.
    Note: This is not about locale configuration but about locale resolver configuration.

提交回复
热议问题