Tutorials : Strictly Struts :

Validating user input and business rules

Now there is a question and half about who checks the data that is passed to the business layer. Again, think about the MVC pattern. The View component i.e. the presentation layer should not know anything about the business logic that goes around the data. What it can know however is the data type and thus should only perform the data type validation. To make things clearer, let us say when we are creating a new Student through the Student registration application, the presentation layer can check for that student user_id cannot be blank and it should always be a 8 character long. What the presentation should not check is that if the user_id specified is already in use. The mandatory nature of the user_id and the check for the 8 character length is what we call data type validation. The uniqueness of the user_id is however a business rule that mandates that every Student should have unique user_id. The Action classes cannot take responsibility of such validations. If you start performing business rule validations within the Action classes, you again lose the separation between data and presentation.

Lesson 2: Action classes should only perform data type validations. Any business rule validation is to be solely done by the Business tier components.

More than one methods in Action class

Often you will find that you are doing some closely coupled operations on a particular business entity. For example, Creating, Reading, Updating and Deleting (CRUD) of Student data are closely related operations all being performed on a single business type Student. It is sometimes good idea to combine all these related functionalities within the same action class. You can do so by extending your own Action class from Struts DispatchAction class and instruct the Struts framework to invoke any desired method from a set of methods defined within that Action class. The Struts framework works on an extra parameter passed to the framework identifying the method to be invoked. For example, the following Action class is an example of a DispatchAction.

public class StudentAction extends DispatchAction
{
  /**
   * create method
  */
   public ActionForward create(ActionMapping mapping, ActionForm form,
                                                HttpServletRequest req, 
HttpServletResponse res) throws Exception
{
   return something;
}
 
  /**
   * read method
  */
   public ActionForward read(ActionMapping mapping, ActionForm form,
                                                HttpServletRequest req, 
HttpServletResponse res) throws Exception
{
   return something;
}
 
/**
   * update method
  */
   public ActionForward update(ActionMapping mapping, ActionForm form,
                                                HttpServletRequest req, 
HttpServletResponse res) throws Exception
{
   return something;
}
 
/**
   * delete method
  */
   public ActionForward delete(ActionMapping mapping, ActionForm form,
                                                HttpServletRequest req, 
HttpServletResponse res) throws Exception
{
   return something;
}

Now to use this class successfully, you need to have the following configuration in the Struts configuration file.

In this configuration file the value of the parameter methodToCall determines the method in the StudentAction class to be invoked. For example, the JSP from which you are calling this action, can set the methodToCall parameter to any of the methods it wants to.

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.