From time to time, I update the examples based on reader feedback
about bugs. It's my intention to only update the examples
when they do not follow the specifications, as opposed to add
work-arounds for specification-compliance bugs in various
containers. In the latter case, I instead inform the vendor about
the problem, in the hope that these examples will have a positive
impact on container-compliance over time.
Changes compared to version 1.0.2
- The test in PBControllerServlet and PBDispatcherServlet to see
if the login form should be presented or not has been corrected.
In the previous version, a log out request resulted in a response
asking the user to log in first if the user was not authenticated.
Now a log out is successful even if the user's session has timed
out (or the user has already logged out explicitly).
Changes compared to version 1.0.1
- The source code for the CounterBean and the corresponding JSP
pages used in Chapter 8 did not match Example 8-4 and 8-5
in the book, and contained an incomplete implementation of
support for permanently stored counters. The code and JSP pages
have been changed to match the examples in the book, and the
permanent storage feature has been removed completely.
- The <sqlTypeValue> action elements for Java primitive
types (boolean, byte[], byte, double, float, int, long and short)
did not work correctly when the value was provided by a bean
property, since the property data type was compared to the
primitive type wrapper class instead of the primitive type
as such. This has been fixed for all primitive type value actions.
- The <ora:validateSession> action lost the query string, if
any, when the request was forwarded to the error page. Now
it's included in the origURL parameter value.
- Changed the invalid doEndTag() return value SKIP_BODY to the correct
EVAL_PAGE in MenuItemTag, described in Chapter 12.
- Corrected DebugBean.getApplicationScope() so it tags its
information correctly as "applicationScope" instead of
"sessionScope".
Changes compared to version 1.0
- Added createStatement(int, int), prepareStatement(String, int, int),
prepareCall(String, int, int), getTypeMap() and setTypeMap() to
ConnectionWrapper.java so it compiles with a Java 2 compiler.
- Removed incorrect </jsp:useBean> tag in ch8/userinfoinput.jsp
and ch12/clientscript.jsp.
- Corrected syntax errors in web.xml for the <security-role>
elements.
- Reset the tag handler properties that can be set using
nested elements, to avoid problems in containers that reuse
tag handler instances (such as Orion). This has been fixed in
EncodeURLTag, RedirectTag, and DBTag.
- Changed the getIndex(String columnName) method in the Row class
to do a case-insensitive lookup, since some databases (e.g.
Oracle) ignores the case used for column names in the
SELECT statement when it creates the ResultSet.