Click here to subscribe to the Head First newsletter!

If you cannot read the information below, click here

Buy 2 Get 1 Free

Buy two books direct from O'Reilly and get the third free by using discount code OPC10 in our shopping cart. Plus, all orders over $29.95 qualify for free shipping within the US.

Caption Contest

If you're familiar with Head First books, you know each chapter starts with a picture and caption like this. Send us your suggestions for amusing or educational Head First-related captions for three of our favorite images and we'll enter you in a drawing to win $200 of O'Reilly products. We'll announce the winner in our May newsletter, so stay tuned!

Available in March:

Head First Servlets & JSP, Second Edition

The next Head First book showing up in your local book store might surprise many of you... it's a brand-new edition of Head First Servlets & JSP. This new edition has flown under the radar a bit, competing for attention alongside heavy-hitting titles like Head First Ruby on Rails or Head First Statistics. So is this book for you? Well, that's a good question...

Series Editor Brett McLaughlin explains in the Head First blog why this second edition is worth your investment.

read it here

Test Yourself:

The New J2EE 1.5 SCWCD Exam

The new edition of Head First Servlets & JSP has a brand-new mock exam full of questions about J2EE 1.5. We've given you three questions below (you can find two more questions and all the answers here). For the full mock exam, you'll have to buy the book!


1) Which of the following custom tags is guaranteed to fail? (Choose all that apply)

A.
<mine:border>
<mine:photos album="${albumSelected}">
</mine:border>
</mine:photos>

B.
<mine:border>
<mine:photos album="${albumSelected}"/>
</mine:border>

C.
<mine:border>
${albumSelected.title}
<mine:photos>${albumSelected}</mine:photos>
</mine:border>

D.
<mine:photos includeBorder="${userPreference.border}"
album="${albumSelected}" />

2) Given:

01. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
02.  
03. <%
04.  java.util.List books = new java.util.ArrayList();
05.  // add line here
06.  request.setAttribute("myFavoriteBooks", books);
07. %>
08.  
09. <c:choose>
10.  <c:when test="${not empty myFavoriteBooks}">
11.     My favorite books are:
12.     <c:forEach var="book" items="${myFavoriteBooks}">
13.       <br/> * ${book}
14.     </c:forEach>
15.   </c:when>
16.   <c:otherwise>
17.     I have not selected any favorite books.
18.   </c:otherwise>
19. </c:choose>

Which of the following lines of code, if inserted independently at Line 5, will cause the text within the c:otherwise tag to display? (Choose all that apply)

A. books.add("");
B. books.add(null);
C. books.clear();
D. books.add("Head First");
E. books = null;

3) When comparing HTTP GET to HTTP POST, what is true? (Choose all that apply.)

A. Only HTTP GET is idempotent.
B. Both require an explicit declaration in HTML form tags.
C. Only HTTP POST can support multiple parameters in a single request.
D. Both support single parameter requests that send multiple values.
E. Only HTTP POST requests should be handled by overriding a servlet's service() method.

get two more questions and all the answers here