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

Get Java Enterprise in a Nutshell, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.