Abstract Factory DAO Pattern in JSP Page

D

Dave

I have implemented the J2EE abstract factory DAO pattern for accessing data
in my application. This works well in my Java application.

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

I am, however, having problems using this with my JSP page. As objects are
typically instantiated using the <jsp:usebean...> tag in JSP, and this
instantiates with a default constructor how do I use this pattern with my
JSP page?

In my Java application I use code along the lines of:

/* The DAOFactory should be instantiated once only! */
DAOFactory daoFactory = DAOFactory.getDAOFactory(DAOFactory.SQLSERVER);

PersonDAO personDAO = daoFactory.getPersonDAO();

Person person = personDAO.getPerson(1234);


I *cannot* instantiate a DAOFactory object using <jsp:usebean..> because it
is an abstract class. I also *cannot* instantiate a PersonDAO object without
using the factory as it is an interface.

My initial thoughts are to use some sort of intermediate wrapper class that
instantiates the DAOFactory and handles requests. Is this the standard way
to handle this problem?

Any suggestions would be appreciated.
 
L

Lew

Dave said:
I *cannot* instantiate a DAOFactory object using <jsp:usebean..> because it
is an abstract class. I also *cannot* instantiate a PersonDAO object without
using the factory as it is an interface.

My initial thoughts are to use some sort of intermediate wrapper class that
instantiates the DAOFactory and handles requests. Is this the standard way
to handle this problem?

There are at least a couple of ways to handle this.

One way leverages the MVC pattern, whereby the logic class associated with the
screen places key objects into the request via setAttribute():

import entity.Person;
public class PersonalInfoHandler extends AbstractHandler
{
private final PersonDao dao = (new DaoFactory()).getPersonDao();

@Override
public void handle()
{
Person person = dao.getPerson( request.getParameter( "person" ));
request.setAttribute( "person", person );
)
}

The dispatch servlet calls the handle() method (through an AbstractHandler
instance), which in turn places the found Person into the request attributes.
(Error checking omitted for simplicity.)

In the associated JSP one can use expressions like:

<p>Person name: ${person.name}</p>

- Lew
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,011
Latest member
AjaUqq1950

Latest Threads

Top