2010-07-07 9 views
1

Est-il acceptable d'avoir plus de 1 DispatcherServlet dans web.xml pour gérer différentes URL? Quel est l'inconvénient?SpringDispatcherServlet multiple pour gérer une URL différente

<servlet> 
    <servlet-name>servlet1</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet> 
    <servlet-name>servlet2</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 


<servlet-mapping> 
    <servlet-name>servlet1</servlet-name> 
    <url-pattern>/url2/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>servlet2</servlet-name> 
    <url-pattern>/url1/*</url-pattern> 
</servlet-mapping> 

Répondre

1

Oui, c'est absolument OK. Selon la complexité et l'architecture de l'application, cela peut devenir très utile. Vous pouvez l'utiliser pour structurer l'application au niveau du répartiteur (plutôt que sur les contrôleurs). Ou lorsque vous souhaitez que certaines classes d'URL aient une configuration de répartiteur différente (résolveurs d'affichage, résolveurs de paramètres régionaux, etc.)

1

Oui, c'est bien. Le seul inconvénient est que les contextes d'application pour chacune des servlets ne pourront pas se parler, mais c'est une approche parfaitement valide.

Je suggérerais, cependant, qu'il est généralement préférable d'avoir juste celui DispatcherServlet, et de gérer tous les routage de demande à l'intérieur. C'est une chose de moins à se tromper.

2

Vous n'avez pas nécessairement besoin de plusieurs instances de la même servlet, à moins que vous ne souhaitiez leur attribuer des valeurs différentes init-param valeurs. Je préfère simplement attribuer des correspondances à la même servlet comme ceci:

<servlet> 
    <servlet-name>springDispatcherServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>springDispatcherServlet</servlet-name> 
    <url-pattern>/url1/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>springDispatcherServlet</servlet-name> 
    <url-pattern>/url2/*</url-pattern> 
</servlet-mapping> 

C'est aussi tout à fait valable pour le cas où vous ne le saviez.

0

Dépend de vos besoins bien sûr, mais dans la plupart des cas préférable d'avoir une servlet.

vous pouvez donc vous simplifier config:

<servlet> 
    <servlet-name>servlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>servlet</servlet-name> 
    <url-pattern>/url2/*</url-pattern> 
    <url-pattern>/url1/*</url-pattern> 
</servlet-mapping> 
Questions connexes