Java tutorial
// ======================================================================== // $Id: Forward.java,v 1.9 2005/08/13 00:01:28 gregwilkins Exp $ // Copyright 1996-2004 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ======================================================================== package net.lightbody.bmp.proxy.jetty.servlet; import net.lightbody.bmp.proxy.jetty.log.LogFactory; import org.apache.commons.logging.Log; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; /* ------------------------------------------------------------ */ /** Forward Servlet Request. * This servlet can be configured with init parameters to use * a RequestDispatcher to forward requests. * * The servlet path of a request is used to look for a initparameter * of that name. If a parameter is found, it's value is used to get a * RequestDispatcher. * * @version $Id: Forward.java,v 1.9 2005/08/13 00:01:28 gregwilkins Exp $ * @author Greg Wilkins (gregw) */ public class Forward extends HttpServlet { private static Log log = LogFactory.getLog(Forward.class); /* ------------------------------------------------------------ */ Map _forwardMap = new HashMap(); /* ------------------------------------------------------------ */ public void init(ServletConfig config) throws ServletException { super.init(config); Enumeration enm = config.getInitParameterNames(); while (enm.hasMoreElements()) { String path = (String) enm.nextElement(); String forward = config.getInitParameter(path); _forwardMap.put(path, forward); } } /* ------------------------------------------------------------ */ public void doPost(HttpServletRequest sreq, HttpServletResponse sres) throws ServletException, IOException { doGet(sreq, sres); } /* ------------------------------------------------------------ */ public void doGet(HttpServletRequest sreq, HttpServletResponse sres) throws ServletException, IOException { String path = (String) sreq.getAttribute("javax.servlet.include.servlet_path"); if (path == null) path = sreq.getServletPath(); if (path.length() == 0) { path = (String) sreq.getAttribute("javax.servlet.include.path_info"); if (path == null) path = sreq.getPathInfo(); } String forward = (String) _forwardMap.get(path); if (log.isDebugEnabled()) log.debug("Forward " + path + " to " + forward); if (forward != null) { ServletContext context = getServletContext().getContext(forward); String contextPath = sreq.getContextPath(); if (contextPath.length() > 1) forward = forward.substring(contextPath.length()); RequestDispatcher dispatch = context.getRequestDispatcher(forward); if (dispatch != null) { dispatch.forward(sreq, sres); return; } } sres.sendError(404); } /* ------------------------------------------------------------ */ public String getServletInfo() { return "Forward Servlet"; } /* ------------------------------------------------------------ */ public synchronized void destroy() { log.debug("Destroyed"); } }