> 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]

Reply via email to