2010-08-02 108 views
0

我有我认为是一个奇怪的问题。URL映射不适用于servlet

用同样映射到一个servlet,一个网址的作品,以及其他没有:

<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 /网站/ NEW_SITE/*而不是/ universal_listings_administration /网站/ 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,从网络(复制,粘贴。 XML)和下面是我在请求得到,当它击中第一个过滤器(比较create_site和delete_site:

create_site: http://www.example.com:8888/universal_listings_administration/sites/new_site/ _pathInfo: “/” _requestURI: “/ universal_listings_administration /网站/ NEW_SITE /” _servletPath:“/ univer sal_listings_administration /网站/ NEW_SITE” _uri: “/ universal_listings_administration /网站/ NEW_SITE /”

delete_site: http://www.example.com:8888/universal_listings_administration/sites/delete_site/ _pathInfo: “/网站/ delete_site /” _requestURI: “/ universal_listings_administration /网站/ delete_site /” _servletPath : “/ universal_listings_administration” _uri: “/ universal_listings_administration /网站/ delete_site /”

现在我想我必须弄清楚为什么_pathInfo和_servletPath有很大的不同......

回答

0

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

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

0

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

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

0

看起来像是一个简单的错字,应该是<url-pattern>,而不是<url_pattern>