title: Spring newbie: The url-pattern for my DispatcherServlet seems to 'override' the welcome-file
body: <p>I am using Spring to render my JSPs, and the url-pattern for my <code>DispatcherServlet</code> is "/". This seems to be making it so that the welcome-file-list is never considered. I would actually like <code>DispatcherServlet</code> to handle everything except "/". However, I would like to avoid file name extensions (e.g., *.html, <em>.do, etc), and I am using an <code>InternalResourceViewResolver</code>, so setting the url-pattern for the dispatcher servlet to "/</em>" makes it accept too much (e.g. the internal requests for the JSP pages that <code>InternalResourceViewResolver</code> generates would be intercepted by the dispatcher servlet, which would then throw an error because it does not have a mapping for /WEB-INF/jsp/about.jsp). Any help would be appreciated - I am <em>very</em> new to Spring (e.g. 2 days ;-) )</p>
  
  <p>Here are the appropriate files: </p>
  
  <p>Directory Structure</p>
  
  <pre class="lang-none prettyprint-override"><code>/war (I'm using AppEngine)
    index.jsp (Simply includes WEB-INF/jsp/index.jsp)
    /WEB-INF
      XML Config files
  
      /jsp
        index.jsp
        about.jsp
        ...
  </code></pre>
  
  <p>web.xml</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5"&gt;
  
  &lt;welcome-file-list&gt;
      &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
  &lt;/welcome-file-list&gt;
  
  &lt;servlet&gt;
      &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;
      &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
      &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
  &lt;/servlet&gt;
  
  &lt;!--
      We purposefully do not make this /*. The convention here is to define
      mappings for files that exist, and write a good 404 page for anything
      else. Also, if you say /*, then the dispatcher servlet will intercept
      all requests, and the InternalResourceViewResolver will fail to
      resolve internal resources (e.g. jsp pages) because the dispatcher
      servlet will be intercepting all of the requests, even the internal
      ones
  --&gt;
  &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
  
  &lt;/web-app&gt;
  </code></pre>
  
  <p>dispatcher-servlet.xml</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;!-- Search for and import all components in the controllers package --&gt;
  &lt;context:component-scan base-package="org.foo.server.controllers" /&gt;
  
  
  &lt;bean name="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"&gt;
      &lt;property name="order" value="2" /&gt;
      &lt;property name="location" value="/WEB-INF/views.xml" /&gt;
  &lt;/bean&gt;
  
  &lt;bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver"&gt;
      &lt;property name="maxUploadSize" value="100000" /&gt;
  &lt;/bean&gt;
  
  
  &lt;!--
      Given an arbitrary view name, such as 'about, that has been returned
      from a handler (controller), this will simply create
      '/WEB-INF/jsp/about.jsp' and send that to the Dispatcher Servlet.
      Because of the way ViewResolvers are chained (e.g. search until a View
      is found), coupled with the annoyance that this ViewResolver cannot
      determine if a View is found, this *has* to be the last ViewResolver
      considered, so I have set the order very high. See
      http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-viewresolver-chaining
      for more details
  --&gt;
  &lt;bean id="jspResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;
      &lt;property name="viewClass"
          value="org.springframework.web.servlet.view.JstlView" /&gt;
      &lt;property name="prefix" value="/WEB-INF/jsp/" /&gt;
      &lt;property name="suffix" value=".jsp" /&gt;
      &lt;property name="order" value="999" /&gt;
  &lt;/bean&gt;
  </code></pre>
  
  <p>JSP Controller (one of the controllers contained within the org.foo.server.controllers" package)</p>
  
  <pre class="lang-java prettyprint-override"><code>@Controller
  public class WebportalController {
  @RequestMapping(value = "/myforms", method = RequestMethod.GET)
  public String getMyForms() {
      return "myforms";
  }
  
  @RequestMapping(value = "/about", method = RequestMethod.GET)
  public String getAbout() {
      return "about";
  }
  ... etc (for now all of the JSP pages are fairly static)
  }
  </code></pre>