O'Reilly logo

Java Enterprise in a Nutshell, Third Edition by William Crawford, Jim Farley

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

The Action Class

The Action class is an adapter between servlet requests and your business logic. In other words, it is appropriate for your Action class to handle issues such as gathering data from the user interface, controlling flow through the application, and shaping the data for presentation. But it is inappropriate for the Action class itself to handle business functions. For example, if your Action class is updating a database itself, you have probably inappropriately put business functions into the web tier.

You will need to extend org.apache.struts.action.Action for each Action you want to define. The most important method to override is execute(). This example is from AdminBooksAction:

  public ActionForward execute(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response)
      throws Exception {
    AdminBooksActionForm adminBooksForm = (AdminBooksActionForm) form;
 
    Map books = getLibrary().getBooks();
 
    // First set all books to checked in
    List bookList = getLibrary().getBookList();
    Iterator i = bookList.iterator();
    while (i.hasNext()) {
      Book book = (Book) i.next();
      if (book != null) {
        book.setCheckedOut(false);
      }
    }
 
    // Now based on the checks in the form, set checked books
    // to "checked out"
    String[] picks = adminBooksForm.getPicks();
    if (picks != null) {
      for (int j = 0; j < picks.length; j++) {
        ((Book) books.get(picks[j])).setCheckedOut(true);
      }
    }
    return mapping.findForward("adminbooks");
  }

This Action handles the form submission from /view/adminbooks.jsp ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required