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