It is our goal at Manning Publications to provide error-free texts. Inevitably, however, minor errors creep into every book in production. Any errors found in the book may be posted to the book's Author Online Forum.
Below are the errata for the Second Printing of SCWCD Exam Study Kit, September 2002.
Page 35, Section 4.2, 1st line:
Current:
public void doXXX(HttpServletRequest, HttpServletResponse)
throws ServletException, IOException;
Change To:
protected void doXXX(HttpServletRequest, HttpServletResponse)
throws ServletException, IOException;
Page 38, Table 4.4, 4th line of second column:
Current: "....as an enumeration of String object."
Change To: "....as an enumeration of String objects."
(append s to object)
Page 41:
Using ServletOutputStream, 2 lines above Table 4.5:
Current:
"....call this method before calling
getPrintWriter()."
Change To:
".....call this method before calling
getWriter()."
Page 43, Redirecting the request, Code at the end of the page:
Current:
PrintWriter pw = res.getPrintWriter();
Change To:
PrintWriter pw = res.getWriter();
Page 50, Listing 4.6:
Move the load-on-startup tag after the last init-param tag.
Page 52, Listing 4.8:
Current:
URL url = context.getResource("files/test.jar");
Change To:
URL url = context.getResource("/files/test.jar");
Page 53, Middle of Listing 4.8:
Change: URL url = context.getResource("files/test.jar");
To: URL url = context.getResource("/files/test.jar");
(Insert a / just before files).
Page 58, Listing 4.9:
Change method signature of the doGet() and doPost()
method
Current:
public void doGet(HttpServletRequest req,
HttpServletResponse res)
public void doPost(HttpServletRequest req,
HttpServletResponse res)
Change To:
public void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException
public void doPost(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException
Page 64 and 418, Question 7:
Remove option (b) and renumber the options
Page 71, Listing 5.1 and first line after the listing:
Current:
<?xml version="1.0" encoding="ISO-8859-1">
Change To:
<?xml version="1.0" encoding="ISO-8859-1" ?>
(Insert ? before the closing > )
Page 74, 3rd bullet:
Current:
<url-pattern>report</url-pattern>
Change To:
<url-pattern>/report</url-pattern>
Page 76, Point # 3:
Current:
" the complete request URI is the servlet path "
Change To:
" the complete request URI, minus the context path, is the servlet path "
Page 92 and 426:
Ending <contex-param> should be </context-param>
Page 97, Listing 7.2:
Current:
private double debit(String accountid, double amount)
throws InsufficientFundsException
Change To:
private double debit(String accountId, double amount)
throws InsufficientFundsException
(Change the accountid to accountId)
Page 103, Last line of NOTE should read:
... java.servlet.error.status_code is set to null.
Page 104:
Replace "Serlvet" with "Servlet" in Step 2 of A.
Page 105, Section 7.3, 1st Code example:
Current:
String accountId = req.getSession().getAttribute("accountId");
Change To:
String accountId = (String) req.getSession().getAttribute("accountId");
and, 1st Code example in the catch clause
Current:
req.setAttribute("javax.servlet.error.servlet_name",
req.getServletName());
Change To:
req.setAttribute("javax.servlet.error.servlet_name",
getServletName());
Page 121, Listing 8.4:
Current:
public void sessionDestoyed(HttpSessionEvent e)
Change To:
public void sessionDestroyed(HttpSessionEvent e)
(insert the missing "r" in sessionDestroyed)
Page 128:
Change All the "JSESSIONID" to "jsessionid"
Page 130, Question 2, Option d:
Current:
session.setAttribute("count" , new Integer(count++));
Change To:
session.setAttribute("count" , new Integer(++count));
Page 144, Section 9.3.3:
Error in example. Current:
<security-role>
<role-name>manager</role-name>
<role-name>director</role-name>
<role-name>employee</role-name>
</security-role>
Change To:
<security-role>
<role-name>manager</role-name>
</security-role>
<security-role>
<role-name>director</role-name>
</security-role>
<security-role>
<role-name>employee</role-name>
</security-role>
Page 148, Running the example, (4th line from the bottom):
Current:
"since bob is the only user we have defined in the deployment descriptor with the role of supervisor"
Change to:
"since bob is the only user we have defined in the tomcat-users.xml with the role of supervisor"
Page 149, Table 9.1, 1st column:
Current: String getRemoteUser
Change to: String getRemoteUser()
Page 151:
In summary, chage CLIENT to CLIENT-CERT
Page 155 and 440, Question 11, Option c:
Change: HttpServletRquest.getUserInRole()
To: HttpServletRquest.getUserInRole(rolename)
Page 160, Figure 10.3:
Figure 10.3 is a duplicate of Figure 10.2. Here is the right figure:

Page 171 in Question 3, 5th and 6th line:
Current:
private static Hashtable statichash = new StringBuffer();
private Hashtable instancehash = new StringBuffer();
Change To:
private static Hashtable statichash = new Hashtable();
private Hashtable instancehash = new Hashtable();
Page 181, Table 11.2:
10th entry should read:
A method returning a float
Page 188:
In the throws clause of the code sample at the top of the page
Current:
javax.IO.IOException
Change to:
java.IO.IOException
Page 190, Third paragraph:
The text in bold is missing. The pragraph should read as follows:
Because the JSP page is converted into a servlet, we can call all the methods in a JSP page that we can call on a servlet. Hence we can get the
ServletContextobject viagetServletConfig().getServletContext().However, in tomcat and in many other containers, the base class of the page's generated class also implements theServletConfiginterface. Thus, in both methods,jspInit()andjspDestroy(), we get theServletContextobject by using the methodgetServletContext(), which is actually defined in thejavax.servlet.ServletConfiginterface.
Page 210: Second line under A:
Change int i=0; to int i;
Page 218:
Second line in Quizlet code should read:
public void jspInit(){
Page 226:
Answer to the first Quizlet provides explaination for two errors in the quizlet question. But there are three errors. The third is that the root element should read as:
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2" >.
The quotation marks in the quizlet question are in the wrong place.
Page 229 and 450, Question 11, Code 2nd line:
Current:
<%int i = 10 ;%>
Change To:
<%int i = 10;%>
(Remove the space between 10 and ;)
Page 235, Top of the page:
Current:
<String pageURL = "other.jsp" %>
<jsp:include page="<%=pageURL%>" />
Change To:
<String pageURL = "other.jsp"; %>
<jsp:include page="%=pageURL%" />
Page and page 244 and 452:
Option 2 should end with %> instead of />
Page 257:
Last sentence should start as:
"Otherwise, a new object of class AddressBean is created, ..."
Page 259, Using Serialized beans:
Change the 2 occurrences of businessData.Address.John to businessData.visitorAddresses.John
Page 263:
Scope of the declared variable, Code at the start of the page, 5th line from end of the code:
Current:
Out.print("Zip: " + address.getZip(); //error here
Change To:
Out.print("Zip: " + address.getZip()); //error here
(Missing bracket)
and the Code snippet at the center of the page 7th line:
Current:
out.print("Zip: " + address.getZip(); //ok
Change To:
out.print("Zip: " + address1.getZip()); //ok
(Add a closing bracket at the end)
Page 279:
Question #8 should read (select two) instead of (select one)
Page 286, section 15.2.1, 2nd paragraph, 5th line:
web-inf should be caps as WEB-INF
Page 293, Section 15.3.2:
First code snippet line 2
Current:
attrib2="<%=someJSPExpresson%>"
Change To:
attrib2="<%=someJSPExpression%>"
Page 300, Listing 16.1 and Page 301, Second Line:
Current:
<?xml version="1.0" encoding="ISO-8859-1">
Change To:
<?xml version="1.0" encoding="ISO-8859-1" ?>
(Insert ? before the closing > )
Page 303, Section 16.1.1:
Current:
<%@ taglib prefix="test" uri=" http://www.manning.com/sampleLib" %>
Change To:
<%@ taglib prefix="test" uri="http://www.manning.com/sampleLib" %>
(Remove the space in the uri after the =")
Page 305, Section 16.1.3, 5th line from the end of the page:
Current:
"...a value of false for the
<rtexprevalue>element...."
Change To:
"...a value of false for the
<rtexprvalue>element...."
Page 323, Table 16.8:
Heading should be:
Methods of the
javax.servlet.jsp.tagext.BodyTag
Page 323, Last Line:
Current: public void doInitBody(BodyContent) throws JspException;
Change to: public void doInitBody() throws JspException;
Page 326, Listing 16.4, Last line on the page:
Current:
if (newIndex<=oldIndex) {
Change To:
if (newIndex<oldIndex) {
Page 334:
The title for Listing 16.8 should be 'CaseTag.java' not 'Case.java'.
Last line should use parent.getValue() as
Object conditionValue = parent.getValue( "conditionValue" );
Page 336, First line after the code ends:
Current:
"The implentation of the "
Change To:
"The implementation of the "
Page 338, First sentence of Summary:
Change tab to tag.
"In this chapter, ...custom tag library."
Page 339 and 466, Question 3, 5th line of code:
Current:
<% message = message + "World! " %>
Change To:
<% message = message + "World! "; %>
Page 358, Fifth bullet on the page:
Current:
Increase response time
Change To:
Improve response time
Page 393, Listing 18.5:
Current:
HttpServletRequest req = (HttpServletRequest) response;
Change To:
HttpServletRequest req = (HttpServletRequest) request;
Page 452: Question 2: Option b
Current:
<%@ include file="test2.jsp" />
Change To:
<%@ include file="test2.jsp" %>
Page 459:
Question #8 should read (select two) instead of (select one). Answer at the bottom of the page should be a and d
Page 460, Explanation at the top of the page:
The underlined part is to be deleted and bold part in the following
is to be inserted.
...therefore, we cannot use answers a, b and c. However, the object is
still existent and is avaliable in the session scope. This means we can either
use the <jsp:getProperty> action to print the street property or use
the implicit variable session to ...
Therefore, answers a and d is are correct.