Alex Garrett wrote:

> Hello, all,
>
> I'm trying to find a way to modify the content of a servlet after the servlet
> has completed all of its processing but before it actually gets sent to the
> browser (obviously).
>
> Here's the context. Our web site stores all its content in XML. All servlets,
> jsps, and static files return this XML and what I'd like to do is turn it all
> into HTML on the fly without each servlet, etc., having to worry about doing the
> transformation itself. My naive first idea was to set the content-type to
> text/cml (CML is the name of the markup language) and have a
> CmlToHtmlInterceptor (extends BaseInterceptor) with a afterBody method that
> would check the content-type and if it's text/cml, retrieve the contents (maybe
> from a ByteBuffer), run it through an XSL engine, turning it into HTML and
> sending that back after changing the appropriate headers (content-type,
> content-length, etc.).
>

I've got two suggestions for you to consider that would make life a lot easier:

* Look at Tomcat 4.0, which implements the new Servlet 2.3 Spec.
  In particular, the 2.3 API supports the concept of a Filter that can
  be used to pre-process and post-process requests.  One of the
  primary use cases that motivated this design was performing things
  like XSLT transformations after the fact.  And (as an added bonus),
  filters are portable -- not Tomcat specific like interceptors or Valves
  (the Tomcat 4.0 equivalent).

* Consider using the Cocoon publishing framework (which you can get
  at <http://xml.apache.org/cocoon>).  It is designed to deal with sites
  that are based on XML content and corresponding transformations.

Under any circumstance, you should upgrade to at least Tomcat 3.2 -- there have
been
a very large number of bug fixes, as well as performance improvements.

Craig McClanahan

Reply via email to