struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andre Van Klaveren <>
Subject Re: PDF Streamed To Client
Date Wed, 27 Apr 2005 14:06:13 GMT
It's was just a suggestion.  I've been bitten in the past when I
wasn't consistant in my design or I didn't follow patterns.  Mostly
with maintenance.  It's made me more of a purist when it comes to

To clarify, the Action doesn't build the byte[] array.  It would
retrieve it from a utility class or business component.  It's job is
to place it in request scope and forward to the Servlet.

It's a great idea to move Nick's code to a utility class.  Putting
that code in an Action certainly would be a bad idea.  Action classes
are controllers and shouldn't directly handle business logic or
building a response to the client.  This would directly couple your
application logic to the Stuts framework.  (Last couple sentences
meant for newbies reading this thread).

Andre Van Klaveren
Architect III, SCP
Enterprise Transformation Services
Unisys Corporation

On 4/27/05, Brian McGovern <> wrote:
> Well i guess thats technically correct but arguably if my action is delegating control
flow by validating the user is who he says he is before showing the pdf to him.  He can be
bounced to 3 other screens via this action class and I don't see much difference in using
the action to stream back response or creating a byte[] or refernce to the File and storing
in request scope.
> Ive achieved reuse by dumping a modified version of Nick's handy method in a utility
class that I'll be reusing on other projects.
> So while i agree with you on principle, i think this might be one of those cases where
in practice its a better idea to stray from stringent mvc pattern.
> But I'm just a hack. :)
> -B
> -----Original Message-----
> From: Andre Van Klaveren []
> Sent: Tuesday, April 26, 2005 4:51 PM
> To: Struts Users Mailing List; Nick Heudecker
> Subject: Re: PDF Streamed To Client
> Brian,
> While Nick's solution certainly works, it doesn't follow best
> practices, MVC in particular (No offense Nick).  Technically a view
> component such as a Servlet or JSP should be responsible for writing
> the response back to the client.  The Action is responsible for flow
> control and interacting with business components.
> I solved a similar problem by having the Action place a byte array of
> the PDF content and the content type (as a String) in request scope
> and forwarding to a Servlet.  The Servlet's (called
> BinaryOutputServlet) sole purpose is to retrieve the content and
> content type from request scope and stream it back to the client.
> This is where Nick's example code would fit nicely.
> Now, in your case you would probably put a reference to the PDF file
> in request scope instead of a byte array, especially if the PDF
> documents are large.  In my case the content was relatively small and
> was generated dynamically.
> If you design the Servlet generically it can be reused in any project
> that requires the application to stream the content of any type of
> file to the client (gif, jpg, rdf, etc).
> --
> Virtually,
> Andre Van Klaveren
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message