agree,
I've read the O'reilly struts book and "Struts in Action".
The Oreilly is more WHAT you can do, where "Struts in Action" is takes a
more practical approach.
Mr. Husted has already sorted out the good vs bad approaches for you. A
good read.
Henrik Bentel
"Laconia Data Systems" <[EMAIL PROTECTED]>
12/09/04 09:31 AM
Please respond to "Struts Users Mailing List"
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
cc:
Subject: Re: Best practice question: Properties (ShoppingCart)
per user
good answer-
I would also strongly encourage reading
"Struts in Action" by Ted Husted
if you Read the foreword from Craig McClanahan you'll want to read this
book
cover to cover
Martin
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
Sent: Thursday, December 09, 2004 10:21 AM
Subject: Re: Best practice question: Properties (ShoppingCart) per user
>
>
>
>
> > For Struts, O'Reilly has a pretty good book, the title of which
elludes
> me at the moment,
>
> Programming Jakarta Struts 2nd ed - Chuck Cavaness
>
> Stuts The Complete Reference - James Holmes was the first Struts book I
> read and was very helpful. Each chapter gave a good overview before
> getting into the details and the code example was simple and manageable.
>
> Bart
>
> "Frank W. Zammetti" <[EMAIL PROTECTED]> wrote on 12/08/2004 11:11:01
PM:
>
> > Sounds good! You'll find that the people here are extremely helpful,
> > but they do tend to shy away from general questions (unless they are
SO
> > general as to be theoretical, in which case EVERYONE has an opinion :)
> > ), so the more specific a question you can ask, the better.
> >
> > As for books to read, I would highly recommend grabbing the latest
copy
> > of Head First Servlets and JSP. It's not Struts-specific, but it is
> > really necassery to know what is going on beneath Struts, and it is
the
> > best I've seen in this area (I'm currently using it as a study guide
for
> > the SCWCD exam, but it's good for anyone I'd say). Frankly, if you
get
> > everything in that book, most of Struts will make sense almost
> > immediately. For Struts, O'Reilly has a pretty good book, the title
of
> > which elludes me at the moment, but I suspect it's the only one they
> > sell. At times it goes into a little TOO much detail for people
trying
> > to get a start in Struts, but most of it is excellent.
> >
> > As for your specific architecture questions... Generally speaking,
your
> > concern about putting all application state for a user in session is
> > valid. This isn't what session is for. It's really for fairly small
> > BITS of state information, things that will in all likelihood change
> > frequently, and certainly nothing that should persist beyond a session
> > (hence the name!). But, in your case, since you are just using it as
an
> > example, I wouldn't worry about it, go ahead and use session, it'll be
> > easier.
> >
> > In Struts, Actions can be shared across requests, which means that if
> > you have class-level variables, they are, potentially, shared across
> > multiple requests. Clearly this is a formula for disaster.
> >
> > There are two ways you could go here... one is to use session as I
said,
> > the other is to have a "data storage class" that just has some static
> > members, most probably a Map of some sort. You can use this as
> > something of a poor man's database. Think of a HashMap for instance
as
> > a database table. Now, assume each element you add to the HashMap is
> > itself a HashMap. You can think of these "inner HashMaps" as rows in
> > the table. Then, each element in that inner HashMap is a field in the
> > table. Make sense? You can go so far as to create insertRow(),
> > deleteRow() and updateRow() methods for your data storage class...
These
> > would do the functions their name implies on the HashMap, and you can
in
> > that way "key" your data, i.e., each "row" has an element recordKey
> > let's say. So, your insert method can throw an exception if a
"record"
> > exists with that key already. In fact, you could go so far as to
throw
> > a SQLException, and in that way you could replace that data storage
> > class with a class that talks to a database down the road, and nothing
> > that uses that class should have to change.
> >
> > But that's getting ahead of ourselves a bit :) If you intend to build
> > something that you know would usually use a database, then the second
> > approach is a good idea. Be sure to synchronize your access to your
> > Maps (which would be a bottleneck in a real application, but you can
get
> > away with it here, and in general in any application that isn't going
to
> > have a big load). But, using session might be easier, depends on how
> > much work (and control) you want. For a shopping cart, the volume of
> > data isn't going to be great, so no worries there.
> >
> > But, the golden rule with Struts to remember is no class-level
> > variables! That's what all this is designed to avoid.
> >
> > --
> > Frank W. Zammetti
> > Founder and Chief Software Architect
> > Omnytex Technologies
> > http://www.omnytex.com
> >
> > Simon MARTIN wrote:
> > > Hi,
> > >
> > > thanks for your offering of help.
> > > I know that my Struts knowlegde is not the best yet -- no question
> about
> > > it -- but I'm willing to change that, as far as my time allows it.
> > >
> > > Fortunately, my lecture is not of that importance you might have
> > > assumed, as I'm 'only' giving a presentation at school. However, I
of
> > > course want to present something I know about, so this does not
really
> > > change the situation.
> > >
> > > As I can see what you're telling me, I think my learning has been to
> > > practice-orientated and too less theory-orientated, which brings me
> into
> > > trouble when the requirements change.
> > > So far, I've only strictly written Spring apps with Struts MVC or
> > > without Struts MVC, but, in any case, with Hibernate as
ORM-framework.
> > > Therefore, I really came into troubles when using Struts alone, and
> then
> > > even doing so without a database.
> > > Of course, I had thought about putting the stuff into the session,
> > > either, but putting complete client-state into the session seemed
> > > unclean to me, as I personally had prefered some kind of
> > > property-setting statically.
> > > Please let me know about further architectural mistakes I've done.
> > >
> > > I've started reading Wiley's 'Mastering Jakarta Struts', which
> > > unfortunately seems kind of outdated to me. Please let me know about
> > > better alternatives.
> > >
> > > Furthermore, I'd appreciate any kind of help.
> > >
> > > Kind regards and thanks in advance,
> > > Simon
> > >
> > >
> > > [EMAIL PROTECTED] wrote:
> > >
> > >> PLEASE do not take offense from what I am about to say. I do not
mean
>
> > >> to be anything but constructive and helpful...
> > >>
> > >> I am concerned that you are trying to build an example for those
you
> > >> will be teaching because I can see some fundamental
misunderstandings,
>
> > >> or gaps in your knowledge. I'd be willing to guess that someone
(your
>
> > >> emoployer?) asked you to teach some people because you were the
best
> > >> of the group, and if that's the case I most certainly commend you
for
> > >> taking on the task.
> > >>
> > >> However, I think it would be in your best interest, and certainly
in
> > >> your students' best interest, to take some time and become more
> > >> familiar with the topic(s) you are going to be teaching. I and
others
>
> > >> here could give you the answers, and we'd be happy to do so, but
the
> > >> questions you are asking are things that you really should be able
to
> > >> answer yourself in light of the fact that you are going to be
> > >> teaching, and might face the same questions, or others that will
test
> > >> your fundamental knowledge. I'm not just talking about learning
> > >> Struts here, which certainly is a big part of it. I sense you may
> > >> have some learning to do with regard to web application development
in
>
> > >> general.
> > >>
> > >> Again, I hope I have not offended you, that is not my intent in any
> > >> way. If your just learning this stuff yourself, that's great,
we'll
> > >> all help any way we can, but I would really try and hold off on the
> > >> teaching for a while until you see these answers yourself.
> > >>
> > >
> > >
> > > > On Tue, December 7, 2004 1:59 pm, Bill Siggelkow said:
> > > > Simon,
> > > >
> > > > Actions should not hold client-state; instead, you can create a
> > > > ShoppingCart in the Action but then save it in the HttpSession.
> > > >
> > > > Without going into to many details, I suggest you take a look at
the
> > > > Struts MailReader example distributed with Struts.
> > > >
> > > > -Bill Siggelkow
> > > >
> > > >
> > > > Simon MARTIN wrote:
> > > >
> > > >> Hi,
> > > >>
> > > >> I'm currently writing a short Struts application without a
database
> (I
> > > >> know that this would be better, but as it is only for teaching
> > > purposes,
> > > >> I don't want to 'overflow' my audience with databases and ORM).
> > > >> It should be a small online sales system -- I've got
ShoppingItems,
> > > >> ShoppingUsers (which are not yet used) and ShoppingCarts.
> > > >>
> > > >> I want a ShoppingCart which stores the ordered items per user. I
> had
> > > >> something like this:
> > > >>
> > > >> public class ShoppingCartAction extends DispatchAction {
> > > >> private ShoppingCartManager shoppingCartManager;
> > > >> ...
> > > >>
> > > >> public ActionForward order(...)
> > > >> ...
> > > >>
> > > >> public ActionForward list(...)
> > > >> ...
> > > >> }
> > > >>
> > > >> and thought that it would work. Unfortunately, each user (which
is
> not
> > > >> authenticated or anything yet) gets the same shopping cart when
he
> > > calls
> > > >> shoppingCart.do?method=list.
> > > >>
> > > >> So I did some research and found this:
> > > >> http://www.jguru.com/faq/view.jsp?EID=1057609
> > > >>
> > > >> So I created an ShoppingCartMapping class
> > > >>
> > > >> public class ShoppingCartMapping extends ActionMapping {
> > > >> private ShoppingCartManager shoppingCartManager;
> > > >> ...
> > > >> }
> > > >>
> > > >> and call it like this
> > > >>
> > > >> public ActionForward list(ActionMapping mapping, ActionForm
form,
> > > >> HttpServletRequest request,
> > > >> HttpServletResponse response)
> > > >> throws Exception {
> > > >> request.setAttribute("orderedItems",
> > > >>
> > > ((ShoppingCartMapping)mapping).getShoppingCartManager().getItems());
> > > >> return mapping.findForward("list");
> > > >> }
> > > >>
> > > >> which gives me a ClassCastException.
> > > >>
> > > >> Do I have to set my custom ActionMapping in web.xml or
> > > >> struts-config.xml?
> > > >> Am I on the right way, or is there a better way of doing this?
> > > >>
> > > >> Thanks in advande and kind regards,
> > > >> Simon
> > > >>
> > > >> PS: Please cc me in your answers.
> > > >
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> > >
> > >
---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]