1 /* 2 * $Id: IncludeAction.java 471754 2006-11-06 14:55:09Z husted $ 3 * 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 package org.apache.struts.actions; 22 23 import org.apache.struts.action.ActionForm; 24 import org.apache.struts.action.ActionForward; 25 import org.apache.struts.action.ActionMapping; 26 27 import javax.servlet.RequestDispatcher; 28 import javax.servlet.ServletException; 29 import javax.servlet.http.HttpServletRequest; 30 import javax.servlet.http.HttpServletResponse; 31 32 /** 33 * <p>An <strong>Action</strong> that includes the context-relative URI 34 * specified by the <code>parameter</code> property of our associated 35 * <code>ActionMapping</code>. This can be used to integrate Struts with 36 * other business logic components that are implemented as servlets (or JSP 37 * pages), but still take advantage of the Struts controller servlet's 38 * functionality (such as processing of form beans).</p> 39 * 40 * <p>To configure the use of this Action in your <code>struts-config.xml</code> 41 * file, create an entry like this:</p> 42 * 43 * <code> <action path="/saveSubscription" 44 * type="org.apache.struts.actions.IncludeAction" 45 * name="subscriptionForm" scope="request" input="/subscription.jsp" 46 * parameter="/path/to/processing/servlet"> </code> 47 * 48 * <p>which will include the context-relative URI specified by the 49 * <code>parameter</code> attribute.</p> 50 * 51 * @version $Rev: 471754 $ $Date: 2005-11-09 00:11:45 -0500 (Wed, 09 Nov 2005) 52 * $ 53 */ 54 public class IncludeAction extends BaseAction { 55 // ----------------------------------------------------- Instance Variables 56 57 /** 58 * Process the specified HTTP request, and create the corresponding HTTP 59 * response (or forward to another web component that will create it). 60 * Return an <code>ActionForward</code> instance describing where and how 61 * control should be forwarded, or <code>null</code> if the response has 62 * already been completed. 63 * 64 * @param mapping The ActionMapping used to select this instance 65 * @param form The optional ActionForm bean for this request (if any) 66 * @param request The HTTP request we are processing 67 * @param response The HTTP response we are creating 68 * @return The forward to which control should be transferred, or 69 * <code>null</code> if the response has been completed. 70 * @throws Exception if an error occurs 71 */ 72 public ActionForward execute(ActionMapping mapping, ActionForm form, 73 HttpServletRequest request, HttpServletResponse response) 74 throws Exception { 75 // Create a RequestDispatcher the corresponding resource 76 String path = mapping.getParameter(); 77 78 if (path == null) { 79 throw new ServletException(messages.getMessage("include.path")); 80 } 81 82 RequestDispatcher rd = 83 servlet.getServletContext().getRequestDispatcher(path); 84 85 if (rd == null) { 86 throw new ServletException(messages.getMessage("include.rd", path)); 87 } 88 89 // Forward control to the specified resource 90 rd.include(request, response); 91 92 // Tell the controller servlet that the response has been created 93 return (null); 94 } 95 }