Отображение URL не работает для сервлета - PullRequest
0 голосов
/ 02 августа 2010

У меня есть, как мне кажется, странная проблема.

При том же сопоставлении с сервлетом один URL работает, а другой - нет:

    <servlet-mapping>
    <servlet-name>UL_Admin</servlet-name>
       <url-pattern>/universal_listings_administration/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
      <servlet-name>Create_New_Site</servlet-name>
      <url-pattern>/universal_listings_administration/sites/new_site/*</url-pattern>
    </servlet-mapping>
   <servlet-mapping>
    <servlet-name>Create_New_Site</servlet-name>
    <url_pattern>/universal_listings_administration/sites/delete_site/*</url_pattern>
   </servlet-mapping>

Create_New_Site работает для / universal_listings_administration / sites / new_site / *, но не для / universal_listings_administration / sites / delete_site / *

При переходе на / universal_listings_administration / sites / delete_site / * сайт просто переходит на UL_Admin !!!

Я изменил порядок URL, но получаю те же результаты. Я пробовал это в разных браузерах, думая, что это может быть проблемой кеширования, но каждый раз получаю одинаковые результаты.

Кто-нибудь имеет представление о том, что здесь происходит ???

Единственное, что я думаю, это могут быть мои фильтры или что-то в этом роде? Я посмотрел, но с фильтрами все работало нормально. В любом случае, вот мои настройки безопасности и фильтра в web.xml

    <security-constraint>
        <web-resource-collection>
            <url-pattern>/universal_listings_administration/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>
    <security-constraint>
        <web-resource-collection>
            <url-pattern>/jsps/admin/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>
    <security-constraint>
        <web-resource-collection>
            <url-pattern>/stylesheets/admin/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>

    <!-- Filters -->
     <filter>
  <!-- This filter defines all of the URIs on the site, to ensure easy to update URIs -->
  <!-- All URIs defined here will be added to the request's Attributes -->
  <!-- The URIs follow naming convention uri-name or uri-admin-name -->
  <!-- For simplicity sake, do this only for client URIs (internal can be covered by eclipse!) -->
  <filter-name>UriSettingFilter</filter-name>
  <filter-class>nz.co.unilistings.control.UriAttributeSettingFilter</filter-class>
  <init-param>
   <param-name>uri-admin-portal</param-name>
   <param-value>/universal_listings_administration/</param-value>
  </init-param>
  <init-param>
   <param-name>uri-admin-new-site</param-name>
   <param-value>/universal_listings_administration/sites/new_site/</param-value>
  </init-param>
  <init-param>
   <param-name>uri-admin-delete-site</param-name>
   <param-value>/universal_listings_administration/sites/delete_site/</param-value>
  </init-param>
 </filter>
 <filter>
     <filter-name>SubdomainFilter</filter-name>
     <filter-class>nz.co.unilistings.control.SubdomainFilter</filter-class>
     <init-param>
   <description>Any subdomain with this value will go to the parent site</description>
   <param-name>parent_site_subdomain</param-name>
   <param-value>www</param-value>
  </init-param>
     <init-param>
   <description>The URL of the parent site (where people can register)</description>
   <param-name>parent_url</param-name>
   <param-value>http://www.example.com:8888</param-value>
  </init-param>
 </filter>

 <filter-mapping>
    <filter-name>SubdomainFilter</filter-name>
    <servlet-name>*</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
 </filter-mapping>  
 <filter-mapping>
  <filter-name>UriSettingFilter</filter-name>
  <servlet-name>*</servlet-name>
  <dispatcher>REQUEST</dispatcher>  
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>INCLUDE</dispatcher>
  <dispatcher>ERROR</dispatcher>
 </filter-mapping>

Обновление:

Я сделал некоторую отладку, я уверен, что я иду по правильному URL (скопируйте, вставьте из web.xml), и вот что я получаю в запросе, когда он попадает в первый фильтр (сравнивая create_site и delete_site :

create_site: http://www.example.com:8888/universal_listings_administration/sites/new_site/ _pathInfo: "/" _requestURI: "/ universal_listings_administration / sites / new_site /" _servletPath: "/ universal_listings_administration / sites / new_site" _uri: "/ universal_listings_administration / sites / new_site /"

delete_site: http://www.example.com:8888/universal_listings_administration/sites/delete_site/ _pathInfo: "/ sites / delete_site /" _requestURI: "/ universal_listings_administration / sites / delete_site /" _servletPath: "/ universal_listings_administration" _uri: "/ universal_listings_administration / sites / delete_site /"

Полагаю, теперь мне нужно выяснить, почему _pathInfo и _servletPath совершенно разные ...

Ответы [ 3 ]

0 голосов
/ 04 августа 2010

Я думаю, что-то не так в моем web.xml с отображением URL. должно быть очень тонким, исправлено только путем копирования и вставки другого сервлет-отображения и изменения URL-адреса.

Возможные причины: использование немецкой клавиатуры и переключение между английским и немецким ???

0 голосов
/ 21 декабря 2013

Похоже на простую опечатку, должно быть <url-pattern>, а не <url_pattern>

0 голосов
/ 02 августа 2010

Отображения выглядят хорошо.Симптомы, по крайней мере, указывают на то, что либо фактический URL был неверным, либо какой-то фильтр или сервлет изменили адресат запроса / ответа до или после достижения сервлета.

Эта проблема трудно найтине отлаживая / не регистрируя все сервлеты и фильтры для отслеживания пути выполнения экземпляра HttpServletRequest во всем коде.А поскольку у нас нет доступа к вашему коду / среде для воспроизведения проблемы, эта задача полностью зависит от вас.

...