View Javadoc

    1   // ========================================================================
    2   // Copyright 199-2004 Mort Bay Consulting Pty. Ltd.
    3   // ------------------------------------------------------------------------
    4   // Licensed under the Apache License, Version 2.0 (the "License");
    5   // you may not use this file except in compliance with the License.
    6   // You may obtain a copy of the License at
    7   // http://www.apache.org/licenses/LICENSE-2.0
    8   // Unless required by applicable law or agreed to in writing, software
    9   // distributed under the License is distributed on an "AS IS" BASIS,
    10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  // ========================================================================
    14
    15  package org.mortbay.servlet;
    16  import java.io.IOException;
    17
    18  import javax.servlet.Filter;
    19  import javax.servlet.FilterChain;
    20  import javax.servlet.FilterConfig;
    21  import javax.servlet.ServletException;
    22  import javax.servlet.ServletRequest;
    23  import javax.servlet.ServletResponse;
    24  import javax.servlet.http.HttpServletRequest;
    25
    26  /* ------------------------------------------------------------ */
    27  /** Welcome Filter
    28   * This filter can be used to server an index file for a directory
    29   * when no index file actually exists (thus the web.xml mechanism does
    30   * not work).
    31   *
    32   * This filter will dispatch requests to a directory (URLs ending with /)
    33   * to the welcome URL determined by the "welcome" init parameter.  So if
    34   * the filter "welcome" init parameter is set to "index.do" then a request
    35   * to "/some/directory/" will be dispatched to "/some/directory/index.do" and
    36   * will be handled by any servlets mapped to that URL.
    37   *
    38   * Requests to "/some/directory" will be redirected to "/some/directory/".
    39   */
    40  public  class WelcomeFilter implements Filter
    41  {
    42      private String welcome;
    43
    44      public void init(FilterConfig filterConfig)
    45      {
    46          welcome=filterConfig.getInitParameter("welcome");
    47  	if (welcome==null)
    48  	    welcome="index.html";
    49      }
    50
    51      /* ------------------------------------------------------------ */
    52      public void doFilter(ServletRequest request,
    53                           ServletResponse response,
    54                           FilterChain chain)
    55  	throws IOException, ServletException
    56      {
    57          String path=((HttpServletRequest)request).getServletPath();
    58          if (welcome!=null && path.endsWith("/"))
    59              request.getRequestDispatcher(path+welcome).forward(request,response);
    60          else
    61              chain.doFilter(request, response);
    62      }
    63
    64      public void destroy() {}
    65  }
    66