私のTomcat-Spring-Javaプロジェクトでは、次のURLが必要です
/index - エントリーページを表示する
/login - ログインページ
/cars/ - 利用可能な車を一覧表示します
/cars/{id} - 特定の車を表示します
/cars/{id}/action - この特定の車に対してアクションを実行します
/people/ - 利用可能な人を一覧表示します
/people/{id} - 特定の人を表示します
/people/{id}/action - この特定の人に対してアクションを実行します
web.xmlで、このようなディスパッチャ サーブレット マップを取得しました。
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/login</url-pattern>
<url-pattern>/logout</url-pattern>
<url-pattern>/index</url-pattern>
<url-pattern>/cars/*</url-pattern>
<url-pattern>/people/*</url-pattern>
</servlet-mapping>
そして、私のdispatcher-servlet.xmlマップは次のようになります:
<bean id="urlMap"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<props>
<prop key="/login">loginController</prop>
<prop key="/logout">logoutController</prop>
<prop key="/index">welcomeController</prop>
<prop key="/cars">listCarsController</prop>
<prop key="/cars/">listCarsController</prop>
<prop key="/cars/*">showCarController</prop>
<prop key="/cars/*/action">actionCarController</prop>
<prop key="/people">listPeopleController</prop>
<prop key="/people/">listPeopleController</prop>
<prop key="/people/*">showPersonController</prop>
<prop key="/people/*/action">actionPersonController</prop>
</props>
</property>
</bean>
たとえば /people/1/action にアクセスすると、Dispacher サーブレット サーブレットは [1/action] のハンドラーを探していると言うので、これは期待どおりに機能しません。人のIDから車のIDへ。
「*」が入力された唯一の URL になるようなものです。
ところで、URL の拡張子を少なくしたいのですが、web.xml ファイルでディスパッチャーを *.htm にマップすれば問題は解決するはずです。
しかし、それはディスパッチをマッピングする方法、またはディスパッチャに完全な URL 定義を検索させる方法である必要があります。