📄 invokerservlet.java
字号:
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* 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 org.apache.catalina.servlets;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.ContainerServlet;
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
import org.apache.catalina.Wrapper;
import org.apache.catalina.util.StringManager;
/**
* The default servlet-invoking servlet for most web applications,
* used to serve requests to servlets that have not been registered
* in the web application deployment descriptor.
*
* @author Craig R. McClanahan
* @version $Revision: 302726 $ $Date: 2004-02-27 09:59:07 -0500 (Fri, 27 Feb 2004) $
*/
public final class InvokerServlet
extends HttpServlet implements ContainerServlet {
// ----------------------------------------------------- Instance Variables
/**
* The Context container associated with our web application.
*/
private Context context = null;
/**
* The debugging detail level for this servlet.
*/
private int debug = 0;
/**
* The string manager for this package.
*/
private static StringManager sm =
StringManager.getManager(Constants.Package);
/**
* The Wrapper container associated with this servlet.
*/
private Wrapper wrapper = null;
// ----------------------------------------------- ContainerServlet Methods
/**
* Return the Wrapper with which we are associated.
*/
public Wrapper getWrapper() {
return (this.wrapper);
}
/**
* Set the Wrapper with which we are associated.
*
* @param wrapper The new wrapper
*/
public void setWrapper(Wrapper wrapper) {
this.wrapper = wrapper;
if (wrapper == null)
context = null;
else
context = (Context) wrapper.getParent();
}
// --------------------------------------------------------- Public Methods
/**
* Finalize this servlet.
*/
public void destroy() {
; // No actions necessary
}
/**
* Process a GET request for the specified resource.
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet-specified error occurs
*/
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
serveRequest(request, response);
}
/**
* Process a HEAD request for the specified resource.
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet-specified error occurs
*/
public void doHead(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
serveRequest(request, response);
}
/**
* Process a POST request for the specified resource.
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet-specified error occurs
*/
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
serveRequest(request, response);
}
/**
* Initialize this servlet.
*/
public void init() throws ServletException {
// Ensure that our ContainerServlet properties have been set
if ((wrapper == null) || (context == null))
throw new UnavailableException
(sm.getString("invokerServlet.noWrapper"));
// Set our properties from the initialization parameters
String value = null;
try {
value = getServletConfig().getInitParameter("debug");
debug = Integer.parseInt(value);
} catch (Throwable t) {
;
}
if (debug >= 1)
log("init: Associated with Context '" + context.getPath() + "'");
}
// -------------------------------------------------------- Private Methods
/**
* Serve the specified request, creating the corresponding response.
* After the first time a particular servlet class is requested, it will
* be served directly (like any registered servlet) because it will have
* been registered and mapped in our associated Context.
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet-specified error occurs
*/
public void serveRequest(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
// Disallow calling this servlet via a named dispatcher
if (request.getAttribute(Globals.NAMED_DISPATCHER_ATTR) != null)
throw new ServletException
(sm.getString("invokerServlet.notNamed"));
// Identify the input parameters and our "included" state
String inRequestURI = null;
String inServletPath = null;
String inPathInfo = null;
boolean included =
(request.getAttribute(Globals.INCLUDE_REQUEST_URI_ATTR) != null);
if (included) {
inRequestURI =
(String) request.getAttribute(Globals.INCLUDE_REQUEST_URI_ATTR);
inServletPath =
(String) request.getAttribute(Globals.INCLUDE_SERVLET_PATH_ATTR);
inPathInfo =
(String) request.getAttribute(Globals.INCLUDE_PATH_INFO_ATTR);
} else {
inRequestURI = request.getRequestURI();
inServletPath = request.getServletPath();
inPathInfo = request.getPathInfo();
}
if (debug >= 1) {
log("included='" + included + "', requestURI='" +
inRequestURI + "'");
log(" servletPath='" + inServletPath + "', pathInfo='" +
inPathInfo + "'");
}
// Make sure a servlet name or class name was specified
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -