You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by dh...@lexmark.com on 2007/05/22 22:42:01 UTC

servlet url-pattern and subdirectories problem

Hi,

We're using Spring-MVC and we're trying to set up 2 "apps" in a single web 
app...

Our main app is under .../mainapp url, and then we have another series of 
pages that can be accessed via ./mainapp/subapp.  The subapp files are 
found in a "subapp" subdirectory in the mainapp webapp.  However, I'm 
having a problem setting up the url-patterns for it - it seems like I 
can't route some pages in the subapp through a servlet (Spring-MVC's 
Dispatcher servlet) and access other static pages directly?

My web.xml snippet is as follows:

        <servlet>
                <servlet-name>mainapp</servlet-name>
 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                <load-on-startup>3</load-on-startup>
            <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>
                /WEB-INF/mainapp-servlet.xml,
                /WEB-INF/subapp-servlet.xml
              </param-value>
            </init-param> 
        </servlet>
 
    <servlet-mapping>
       <servlet-name>mainapp</servlet-name>
       <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
       <servlet-name>mainapp</servlet-name>
       <url-pattern>/subapp/*</url-pattern>
    </servlet-mapping>
 
This allows me to route ./mainapp/subapp/myaction.do correctly, but I 
can't access ./mainapp/subapp/images/xyz.gif.  What I'd really like to do 
is have the last url-pattern to be "/subapp/*.do" - but I understand the 
spec won't allow this? 

Anyone have any idea how I can make this work?

cheers,


Re: servlet url-pattern and subdirectories problem

Posted by Georg Sauer-Limbach <gs...@gslweb.de>.
dhay@lexmark.com wrote:
>     <servlet-mapping>
>        <servlet-name>mainapp</servlet-name>
>        <url-pattern>*.do</url-pattern>
>     </servlet-mapping>
> 
>     <servlet-mapping>
>        <servlet-name>mainapp</servlet-name>
>        <url-pattern>/subapp/*</url-pattern>
>     </servlet-mapping>
>  
> This allows me to route ./mainapp/subapp/myaction.do correctly, but I 
> can't access ./mainapp/subapp/images/xyz.gif.  What I'd really like to do
 > is have the last url-pattern to be "/subapp/*.do" - but I understand the
 > spec won't allow this?
 >
 > Anyone have any idea how I can make this work?

Use one more mapping which maps the subapp path:

      <servlet-mapping>
         <servlet-name>subapp-images-servlet</servlet-name>
         <url-pattern>/subapp/images</url-pattern>
      </servlet-mapping>

The longest matching path wins. Only if no path matches are
the extension mappings taken into account:

	...
	<url-pattern>*.ext</url-pattern>

See chapter 11 of the Servlet Spec.

Georg

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org