📄 actioncomponentservlet.java
字号:
/*
* $Header: /sfroot/cvs/esimple/src/core/org/apache/struts/tiles/ActionComponentServlet.java,v 1.1.1.1 2004/09/08 06:38:35 lava Exp $
* $Revision: 1.1.1.1 $
* $Date: 2004/09/08 06:38:35 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.struts.tiles;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.taglib.html.Constants;
import org.apache.struts.upload.MultipartRequestWrapper;
/**
* Action Servlet to be used with Tiles and Struts 1.0.x.
* For Struts 1.1, use TilesPlugin and eventualy TilesRequestProcessor.
* This servlet extends struts one. It adds channels and screens dispatching
* capabilities.
* We overide all methods that do request forward (i.e. 'processActionForward'
* and 'processValidate') in order to call a new method performing forward.
* In fact, we copy methods to overide, and change lines doing forward which
* now call 'processForward()'. Rest of the method is unchanged.
* This new method could now be overiden in order to dispatch request before
* forwarding.
* Compliant to ActionServlet from struts 2001/06/25 00:02:27
* @deprecated Tiles now uses ActionServlet with TilesPlugin and TilesRequestProcessor.
*/
public class ActionComponentServlet extends ActionServlet {
/** Definitions factory */
private DefinitionsFactory definitionsFactory;
/**
* Init method.
* This method is call on any servlet.
*/
public void init() throws ServletException
{
super.init();
initComponentDefinitionsMapping();
}
/**
* Read component instance mapping configuration file.
* This is where we read files properties.
*/
public void initComponentDefinitionsMapping() throws ServletException // IOException,
{
// Check struts version by checkin PlugIn classes existance.
try
{
Class plugInClass = TilesUtil.applicationClass( "org.apache.struts.action.PlugIn");
// Class exist ==> struts 1.1 or greater
log( "Warning - ActionComponentServlet class: This class is to be used with Struts1.0.x only. "
+ "Please modify web.xml to use regular ActionServlet class instead in conjugaison "
+ "with appropriate plugin declared in struts-config.xml.");
//return;
// Let create factory for backward compatibility
}
catch( ClassNotFoundException ex )
{ // Not found ==> struts 1.0.x
}
try
{
// create definition factory
definitionsFactory = DefinitionsUtil.createDefinitionsFactory(getServletContext(), getServletConfig(), true);
}
catch( DefinitionsFactoryException ex )
{
log( "Fail to load Tiles definition factory from ActionComponentServlet", ex);
throw new ServletException( ex.getMessage(), ex );
}
log("Tiles definition factory loaded from ActionComponentServlet");
}
/**
* Overload struts1.0 counterpart in order to catch forward calls.
* This is an exact copy, except the call to RequestDispatcher.forward()
* replaced by doForward().
* This method is only used with Struts1.0.x
*
* Forward to the specified destination, by the specified mechanism,
* if an <code>ActionForward</code> instance was returned by the
* <code>Action</code>.
*
* @param forward The ActionForward returned by our action
* @param mapping The ActionMapping we are processing
* @param formInstance The ActionForm we are processing
* @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 exception occurs
*/
protected void processActionForward( ActionForward forward,
ActionMapping mapping,
ActionForm formInstance,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
if (forward != null)
{
String path = forward.getPath();
if (forward.getRedirect())
{
if (path.startsWith("/"))
path = request.getContextPath() + path;
response.sendRedirect(response.encodeRedirectURL(path));
}
else
{
doForward(path, request, response);
}
}
}
/**
* Overload struts1.0 counterpart in order to catch forward calls.
* This is an exact copy, except the call to RequestDispatcher.forward()
* replaced by doForward().
* This method is only used with Struts1.0.x
*
* Call the <code>validate()</code> method of the specified ActionForm,
* and forward back to the input form if there are any errors. Return
* <code>true</code> if we should continue processing (and call the
* <code>Action</code> class <code>perform()</code> method), or return
* <code>false</code> if we have already forwarded control back to the
* input form.
*
* @param mapping The ActionMapping we are processing
* @param formInstance The ActionForm we are processing
* @param request The servlet request we are processing
* @param response The servlet response we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet exception occurs
*/
protected boolean processValidate(ActionMapping mapping,
ActionForm formInstance, HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
if (formInstance == null)
return (true);
if (debug >= 1)
log(" Validating input form properties");
// Was this submit cancelled?
if ((request.getParameter(Constants.CANCEL_PROPERTY) != null)
|| (request.getParameter(Constants.CANCEL_PROPERTY_X) != null)) {
if (debug >= 1)
log(" Cancelled transaction, no validation");
return (true);
}
// Has validation been turned off on this mapping?
if (!mapping.getValidate())
return (true);
// Call the validate() method of our ActionForm bean
// Use struts1.0 compatible method, as this class is mainly for struts1.0
// backward compatibility.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -