My last submission of this patch was heinously wrapped, and buried in a lot of 
discussion.

This patch will:

- check for the presence of a 'forwardWelcomeFiles' init param. if not present, it's 
false.
- if 'forwardWelcomeFiles' is true, a request with a trailing slash that resolves to a 
welcome
file will return the welcome file. if false, it will send a redirect to the welcome 
file.

Matt


--- DefaultServlet.java.orig    2003-01-07 08:41:16.000000000 -0700
+++ DefaultServlet.java 2003-01-07 08:42:33.000000000 -0700
@@ -169,6 +169,10 @@
      */
     protected String welcomes[] = new String[0];
 
+    /**
+     * Should we redirect or forward for welcome files?
+     */
+    protected boolean forwardWelcomeFiles = false;
 
     /**
      * MD5 message digest provider.
@@ -294,6 +298,13 @@
         } catch (Throwable t) {
             ;
         }
+        try {
+            value = getServletConfig().getInitParameter("forwardWelcomeFiles");
+            if (value != null)
+                forwardWelcomeFiles = (new Boolean(value)).booleanValue();
+        } catch (Throwable t) {
+            ;
+        }
 
         // Sanity check on the specified buffer sizes
         if (input < 256)
@@ -957,11 +968,16 @@
             if (welcomeFileInfo != null) {
                 String redirectPath = welcomeFileInfo.path;
                 String contextPath = request.getContextPath();
-                if ((contextPath != null) && (!contextPath.equals("/"))) {
+                if ((contextPath != null) && (!contextPath.equals("/")) && 
+(!forwardWelcomeFiles)) {
                     redirectPath = contextPath + redirectPath;
                 }
                 redirectPath = appendParameters(request, redirectPath);
-                response.sendRedirect(redirectPath);
+                if (forwardWelcomeFiles) {
+                   request.getRequestDispatcher(redirectPath).forward(request, 
+response);
+                }
+                else {
+                   response.sendRedirect(redirectPath);
+                }
                 return;
             }

--- web.xml.orig        2003-01-07 08:58:09.000000000 -0700
+++ web.xml     2003-01-07 08:50:13.000000000 -0700
@@ -39,6 +39,9 @@
   <!--   readonly            Is this context "read only", so HTTP           -->
   <!--                       commands like PUT and DELETE are               -->
   <!--                       rejected?  [true]                              -->
+  <!--                                                                      -->
+  <!--   forwardWelcomeFiles Should welcome files be forwarded instead      -->
+  <!--                       of being redirected? [false]                   -->
       <servlet>
         <servlet-name>default</servlet-name>




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to