Recipe6.6.Including the Response from a Servlet or JSP


Recipe 6.6. Including the Response from a Servlet or JSP

Problem

You want to retrieve and include a partial HTTP response from a servlet or JSP, but you want control to go through Struts.

Solution

Employ an including action. Specifying the module-relative path to the resource as the value of the include attribute is the most convenient way:

<action  path="/IncludeContent"       include="/LegacyIncludeServlet"/>

Alternatively, if you use a custom RequestProcessor, which overrides the processForwardConfig( ) method, you must use the Struts built-in IncludeAction, specifying the context-relative path for the value of the parameter attribute:

<action path="/IncludeContent"         type="org.apache.struts.actions.IncludeAction"    parameter="/LegacyIncludeServlet"/>

Discussion

This recipe addresses a problem similar to that in Recipe 6.6. The solution is similar as well; you can use the include attribute of the action element, or you can use the Struts-provided IncludeAction. The IncludeAction uses the value specified for the parameter attribute to indicate the resource whose response is to be included.

You may have legacy code that includes content, using RequestDispatcher.include( ) or jsp:include, from another servlet or JSP. You can replace direct references to the included resources with an including action defined in your struts-config.xml file.

Like the ForwardAction, you only need to use the IncludeAction if you are using a custom RequestProcessor, which overrides the processForwardConfig( ) method, to handle requests. Using an including action ensures that the request is routed through your application's control layer provided by Struts's ActionServlet and RequestProcessor. An including action essentially decorates the legacy resource with Struts functionality. You use this action as you would the original resource. In other words, you would change JSP tags that look like this:

<jsp:include page="/LegacyIncludeServlet"/>

to this:

<jsp:include page="/IncludeContent.do"/>

See Also

Recipe 6.5 shows how to use a similar approach that provides the equivalent replacement for calls to the RequestDispatcher.forward().



    Jakarta Struts Cookbook
    Jakarta Struts Cookbook
    ISBN: 059600771X
    EAN: 2147483647
    Year: 2005
    Pages: 200

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net