Perry Hoekstra wrote:
> I read the thread entitled JSP/Servlet Architecture that was held back in
> October and was particullary intrigued by Craig McClanahan reponses. In
> that thread, a servlet acted as a facade to the backend resource. I did not
> find any threads discussing the merits of using servlets/Java beans acting
> as the facade class.
>
Depending on which thread you were looking at, the approach I actually utilize
might not have been clear. I don't use servlets directly as a facade for the
backend resource -- instead, I use them as the controller in an MVC architecture.
The general organization of request processing in my apps goes like this:
* Input form is created by a JSP page (normally using beans
found in the user session to remember previous input values).
* When the user presses submit, the form is posted to a servlet
with a URL that lets the servlet figure out what processing is
required (see below for more on this).
* Servlet receives the request, figures out which action class to use,
and calls that action class. The action class is usually very short --
its main purpose is to serve as an adapter between the HTTP request
view of the input parameters and the bean properties (and method
calls) that implement the business logic.
* The action procedure stores the results of its processing as either
request beans or session beans (depending on how long the results
need to be alive).
* The controller servlet then forwards (RequestDispatcher.forward())
to the appropriate JSP page to display the results.
What I normally do is use a single servlet per web application, and then map it to
a filename extension (I like ".go" because it implies motion). Now, if I submit a
form to URL "/saveCustomer.go", my controller servlet is called. It can parse
"saveCustomer" out of the request URI and use it as the key to a lookup table
containing the Java class of the corresponding implementation class (all
configured in initialization properties -- no hard coding). The first time I call
a particular action procedure, I instantiate a new instance of that action class.
After that, I resuse the same one over again (which must be thread-safe, for
obvious reasons).
The net of all this is that I'm just using a servlet as a dispatcher -- everything
else is done in beans, which are equally accessible to servlets and JSP pages that
belong to the same application.
Craig McClanahan
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
FAQs on JSP can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html