2010-07-15 2 views
0

На моем проекте Tomcat-Spring-Java Я хочу иметь следующие URLSHave весна DispacherServlet решить правильный URLmap

/индекс - для отображения ввода поискового вызова
/Войти - Войти страницу

/автомобилей/- список доступных автомобилей
/автомобили/{ID} - показан конкретный автомобиль
/автомобили/{ID}/действие - сделать действие на данном автомобиле

/люди/- список доступных людей
/люди/{ID} - показать конкретное лицо
/людей/{ID}/действия - сделать действия по этому конкретному человеку

Ive получил мой dispacher-сервлет карту, как это в 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> 

И мой диспетчеру-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> 

Это не работает, как ожидалось, так как, когда я посещаю, например/человек/1/действие, The Dispacher сервлета сервлета говорит, что ищет обработчик для [1/action], и, конечно же, это не поиски, а люди/впереди, чтобы разделить идентификаторы людей с идентификатором автомобилей.

Как будто '*' будет единственным введенным URL.

Кстати, я хочу, чтобы расширение моего URL было меньше, я знаю, что для сопоставления диспетчера с * .htm в файле web.xml бы позаботился о проблеме.
Но это должно стать способом сопоставить диспетчерский пункт или заставить диспетчера искать полное определение URL-адреса.

ответ

1

Вы можете установить alwaysUseFullPath свойство:

<bean id="urlMap" 
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 

    <property name = "alwaysUseFullPath" value = "true" /> 

    ... 
</bean> 

В качестве альтернативы, вы можете установить один <url-pattern> для диспетчера сервлета. Так как это не может быть /*, вам нужно use UrlRewriteFilter.

+0

Подготовка к опросу alwaysUseFullPath. Я уже пробовал UrlRewriteFilter, чтобы сделать неограниченный URL-адрес .spring, но он выглядит ужасно, чтобы заполнить мои карты URL с помощью .spring в конце, кроме того, что он работает с/people /, поскольку нет файла для добавления расширения ... – JorgeO

+0

UrlRewriteFilter я попробовал это с помощью этого сообщения http://blog.ericdaugherty.com/2010/03/web-file-extensions-are-bad.html – JorgeO

+0

Работал! Я не знаю, почему это не поведение по умолчанию. Или лучше документировано. благодаря – JorgeO

 Смежные вопросы

  • Нет связанных вопросов^_^