これには適切な MVC フレームワークを使用することを強くお勧めします。お気づきのとおり、標準のサーブレット API の柔軟性は、リクエストのディスパッチに関して非常に限られています。
理想的には、既存のサーブレット コードを MVC フレームワークと組み合わせて使用できます。フレームワークはパス パターンに基づいてダイアプシングを実行し、サーブレットはビジネス ロジックを実行します。幸いなことに、Spring MVC では、ServletForwardingController を使用してそれを行うことができます。それは非常に軽量な春の設定になります。
したがって、web.xml には次のようなものがあります。
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>foo.MyServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<url-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*</url-pattern>
</url-mapping>
次に、次のような WEB-INF/spring-servlet.xml ファイルがあります。
<beans>
<bean name="/prefix*.xml" class="org.springframework.web.servlet.mvc.ServletForwardingController">
<property name="servletName" value="myServlet"/>
</bean>
</beans>
そして、それはほとんどそれです。/prefix*.xml に対するすべての要求は myServlet に送信され、その他のすべての要求はコンテナーに送信されます。