【问题标题】:URL mapping not working for servletURL 映射不适用于 servlet
【发布时间】:2010-08-02 16:20:11
【问题描述】:

我有一个我认为很奇怪的问题。

使用相同的 servlet 映射,一个 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!!!

我更改了网址的顺序,但得到了相同的结果。我在不同的浏览器上试过这个,认为这可能是一个缓存问题,但每次都得到相同的结果。

有人知道这里发生了什么吗???

我认为唯一可能是我的过滤器或其他东西?我看过了,但过滤器似乎一切正常。无论如何,这是我在 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 :

创建站点: 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/"

删除站点: 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 完全不同...

【问题讨论】:

    标签: jsp servlets web.xml


    【解决方案1】:

    映射看起来不错。这些症状至少表明 实际 URL 错误,或者某些过滤器或 servlet 在到达 servlet 之前或之后更改了请求/响应目标。

    如果不调试/记录所有 servlet 和过滤器以在整个代码中跟踪 HttpServletRequest 实例的执行路径,则很难确定此问题。由于我们无法访问您的代码/环境来重现问题,因此这项任务完全取决于您。

    【讨论】:

      【解决方案2】:

      我认为我的 web.xml 中的 url-mapping 一定有问题。必须非常微妙,只能通过复制和粘贴另一个 servlet 映射并更改 url 来修复。

      可能原因:使用德语键盘,在英语和德语之间切换???

      【讨论】:

        【解决方案3】:

        看起来像一个简单的错字,应该是&lt;url-pattern&gt;,而不是&lt;url_pattern&gt;

        【讨论】:

          猜你喜欢
          • 2012-01-20
          • 2017-09-21
          • 1970-01-01
          • 2012-04-17
          • 2018-11-24
          • 2011-07-09
          • 2016-01-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多