Some consider using the JSTL database
access actions in JSP pages as
putting too much business logic in the presentation layer (the View),
and therefore think it’s something that should be
avoided. For a very simple application, it’s no big
deal, but for a more complex application it’s better
to move the SQL statements to some other component type. You have
basically two options: move it to a Controller servlet (or an action
class that the servlet delegates to), as in the Chapter 18 example, or encapsulate it in a custom action.
In both cases it makes sense to add yet another abstraction layer in
the form of a bean that encapsulates the SQL statements and let the
servlet or tag handler access the data in a purer form. One example
of such a bean is the
EmployeeRegistryBean used in
Chapter 18 for authentication as well as for
retrieving and saving information about an employee.
When you develop this type of database access components, you can of
course use the JDBC API directly. I find it handy to use a generic
JDBC bean, such as the
com.ora.jsp.beans.sql.SQLCommandBean described in
this section. Besides taking care of a lot of the grunt work, it also
converts a query result into an instance of the same class that the
<sql:query> action uses to expose the
result. This makes it easy to use a JSP page that renders the result.
SQLCommandBean has three write-only
properties. Example 23-4 shows the beginning of the
with the setter methods. ...