В моем проекте 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], и, конечно, это не поиск, а люди / впереди, чтобы отделить Идентификатор народов к идентификатору автомобилей.
Это похоже на то, что "*" будет единственным введенным URL.
Кстати, я хочу, чтобы расширение моего URL-адреса было меньше, я знаю, что сопоставление диспетчера с * .htm в файле web.xml решило бы проблему.
Но это должен быть способ решить эту проблему. отобразить диспетчер или заставить диспетчер искать полное определение URL-адреса.