org.mortbay.jetty.handler
Class RewriteHandler

java.lang.Object
  extended by org.mortbay.component.AbstractLifeCycle
      extended by org.mortbay.jetty.handler.AbstractHandler
          extended by org.mortbay.jetty.handler.AbstractHandlerContainer
              extended by org.mortbay.jetty.handler.HandlerWrapper
                  extended by org.mortbay.jetty.handler.RewriteHandler
All Implemented Interfaces:
LifeCycle, Handler, HandlerContainer

public class RewriteHandler
extends HandlerWrapper

Path Rewrite Handler

This path uses the pattern matching of PathMap to rewrite URI's of received requests. A typical jetty.xml configuration would be:

     <Set name="handler">
       <New id="Handlers" class="org.mortbay.jetty.handler.RewriteHandler">
         <Set name="rewriteRequestURI">false</Set>
         <Set name="rewritePathInfo">false</Set>
         <Set name="originalPathAttribute">requestedPath</Set>
         <Call name="addRewriteRule"><Arg>/other/*</Arg><Arg>/test</Arg></Call>
         <Call name="addRewriteRule"><Arg>/test/*</Arg><Arg></Arg></Call>
         <Call name="addRewriteRule"><Arg>/*</Arg><Arg>/test</Arg></Call>
         <Set name="handler">
           <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
             <Set name="handlers">
              <Array type="org.mortbay.jetty.Handler">
                <Item>
                  <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/>
                </Item>
                <Item>
                  <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/>
                </Item>
                <Item>
                  <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
                </Item>
              </Array>
             </Set>
           </New>
         </Set>
       </New>
     </Set>
 


Field Summary
 
Fields inherited from class org.mortbay.jetty.handler.AbstractHandler
_string
 
Fields inherited from interface org.mortbay.jetty.Handler
ALL, DEFAULT, ERROR, FORWARD, INCLUDE, REQUEST
 
Constructor Summary
RewriteHandler()
           
 
Method Summary
 void addRewriteRule(String pattern, String prefix)
          Add a path rewriting rule
 String getOriginalPathAttribute()
           
 PathMap getRewrite()
           
 void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch)
          Handle a request.
 boolean isRewritePathInfo()
           
 boolean isRewriteRequestURI()
           
 void setOriginalPathAttribute(String originalPathAttribte)
           
 void setRewrite(PathMap rewrite)
           
 void setRewritePathInfo(boolean rewritePathInfo)
           
 void setRewriteRequestURI(boolean rewriteRequestURI)
           
 
Methods inherited from class org.mortbay.jetty.handler.HandlerWrapper
addHandler, doStart, doStop, expandChildren, getHandler, setHandler, setServer
 
Methods inherited from class org.mortbay.jetty.handler.AbstractHandlerContainer
expandHandler, getChildHandlerByClass, getChildHandlers, getChildHandlersByClass
 
Methods inherited from class org.mortbay.jetty.handler.AbstractHandler
destroy, getServer, toString
 
Methods inherited from class org.mortbay.component.AbstractLifeCycle
isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.mortbay.component.LifeCycle
isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, start, stop
 

Constructor Detail

RewriteHandler

public RewriteHandler()
Method Detail

isRewriteRequestURI

public boolean isRewriteRequestURI()
Returns:
the rewriteRequestURI If true, this handler will rewrite the value returned by HttpServletRequest.getRequestURI().

setRewriteRequestURI

public void setRewriteRequestURI(boolean rewriteRequestURI)
Parameters:
rewriteRequestURI - true if this handler will rewrite the value returned by HttpServletRequest.getRequestURI().

isRewritePathInfo

public boolean isRewritePathInfo()
Returns:
true if this handler will rewrite the value returned by HttpServletRequest.getPathInfo().

setRewritePathInfo

public void setRewritePathInfo(boolean rewritePathInfo)
Parameters:
rewritePathInfo - true if this handler will rewrite the value returned by HttpServletRequest.getPathInfo().

getOriginalPathAttribute

public String getOriginalPathAttribute()
Returns:
the originalPathAttribte. If non null, this string will be used as the attribute name to store the original request path.

setOriginalPathAttribute

public void setOriginalPathAttribute(String originalPathAttribte)
Parameters:
originalPathAttribte - If non null, this string will be used as the attribute name to store the original request path.

getRewrite

public PathMap getRewrite()
Returns:
A PathMap of the rewriting rules.

setRewrite

public void setRewrite(PathMap rewrite)
Parameters:
rewrite - A PathMap of the rewriting rules. Only prefix paths should be included.

addRewriteRule

public void addRewriteRule(String pattern,
                           String prefix)
Add a path rewriting rule

Parameters:
pattern - The path pattern to match. The pattern must start with / and may use a trailing /* as a wildcard.
prefix - The path prefix which will replace the matching part of the path.

handle

public void handle(String target,
                   HttpServletRequest request,
                   HttpServletResponse response,
                   int dispatch)
            throws IOException,
                   ServletException
Description copied from interface: Handler
Handle a request.

Specified by:
handle in interface Handler
Overrides:
handle in class HandlerWrapper
Parameters:
target - The target of the request - either a URI or a name.
request - The request either as the Request object or a wrapper of that request. The HttpConnection.getCurrentConnection() method can be used access the Request object if required.
response - The response as the Response object or a wrapper of that request. The HttpConnection.getCurrentConnection() method can be used access the Response object if required.
dispatch - The dispatch mode: Handler.REQUEST, Handler.FORWARD, Handler.INCLUDE, Handler.ERROR
Throws:
IOException
ServletException