<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"> <TR><TD> <IMG SRC="penduke.gif" WIDTH="164" HEIGHT="115" ALIGN=left ALT="Duke"> </TD><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> The <I><A HREF="/developer/Books/jsp/index.html">JSP Professional: Chapter 12, JSP Archictecture</A></I> Test your knowledge on the differences between servlets and JSP, Factor Forward-Factor Back, page-centric verses the dispatcher approach, and more. </FONT></TD></TR> </TABLE>
<HR>
<!-- Form calls the answer.jsp, which invokes the QuizResponses bean --> <FORM METHOD="POST" ACTION="answer.jsp">
<OL> <!-- Question 1 -->
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Choose the statement that best describes the relationship between javaServer Pages<SUP><FONT SIZE="-2">TM</FONT></SUP> (JSP<SUP><FONT SIZE="-2">TM</FONT></SUP>) and servlets: </FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="one" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Servlets are built on JSP semantics and all servlets are compiled to JSP pages for runtime usage<BR></FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="one" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> JSP and servlets are unrelated technologies</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="one" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Servlets and JSP are competing technologies for handling web requests. Servlets are being superceded by JSP, which is preferred. The two technologies are not useful in combination. </FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="one" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> JSPs are built on servlet semantics and all JSPs are compiled to servlets for runtime usage </FONT></TD></TR> </TABLE>
<P> <!-- Question 2 --> <LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">What is a benefit of using JavaBeans<SUP><FONT SIZE="-2">TM</FONT></SUP> to separate business logic from presentation markup within the JSP environment? </FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="two" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD> <FONT FACE="Verdana, Arial, Helvetica, sans-serif"> It allows the JSP to access middleware </FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="two" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">It creates a cleaner role separation between the web-production team and the software development team, so that the web-production team can focus on presentation markup, while the software team can focus on building reusable software components for helping to generate dynamic displays </FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="two" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">It provides a dynamic markup environment, such that JavaBeans are integrated seamlessly with the template presentation content, in order to create the dynamic display for the client </FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="two" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">It provides the developer with full access to the Java<SUP><FONT SIZE="-2">TM</FONT></SUP> 2 Platform Enterprise Edition (J2EE<SUP><FONT SIZE="-2">TM</FONT></SUP>), which is unavailable from outside the JavaBean environment </FONT></TD></TR> </TABLE> <P> <!-- Question 3 -->
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Why use the <CODE>RequestDispatcher</CODE> to forward a request to another resource, instead of doing a <CODE>sendRedirect</CODE>? </FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="three" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Redirects are no longer supported in the current servlet API</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="three" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Redirects are not a cross-platform portable mechanism</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="three" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> The <CODE>RequestDispatcher</CODE> does not use the reflection API</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="three" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> The <CODE>RequestDispatcher</CODE> does not require a round trip to the client, and thus is more efficient and allows the server to maintain request state</FONT></TD></TR> </TABLE>
<P> <!-- Question 4 -->
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">What alternatives exist to embedding Java code directly within the HTML markup of your JSP page?</FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="four" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Moving the code into your session manager</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="four" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Moving the code into sciptlets</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="four" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Moving the code into JavaBeans and servlets</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="four" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Moving the code into a transaction manager</FONT></TD></TR> </TABLE> <P> <!-- Question 5 -->
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> What type of scriptlet code is better-suited to being <I>factored forward</I> into a servlet? </FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="five" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Code that deals with logic that is common across requests</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="five" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Code that deals with logic that is vendor specific</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="five" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Code that deals with logic that relates to database access</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="five" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Code that deals with logic that relates to client scope</FONT></TD></TR> </TABLE>
<P> <!-- Question 6 -->
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Choose the statement that best describes how to connect JSP pages and EJBs</FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="six" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Lookup the EJBs from within a JSP, but use the EJBs from within a basic JavaBean</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="six" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Lookup and use the EJBs from a separate business delegate. The JavaBeans that work with JSP pages are clients to these business delegates and know nothing about EJB specifics</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="six" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Lookup and use the EJBs from within a JSP page, but only as remote references</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="six" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Lookup the EJBs from within a servlet, delegating usage to specific JSP pages</FONT></TD></TR> </TABLE>
<P> <!-- Question 7 -->
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Are custom tags available in JSP 1.0? If not, how else might you implement iteration from within a JSP? </FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="seven" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Yes, but the only tags available relate to database access</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="seven" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> No. To iterate over a collection of values, one must use scriptlet code</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="seven" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> No, but there is a standard <iterate> tag that may be used</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="seven" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> Yes, but custom tags will not help developers create tags for use in iterating over a collection</FONT></TD></TR> </TABLE>
<P> <!-- Question 8 -->
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> What is the initial contact point for handling a web request in a <I>Page-Centric</I> architecture? </FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="eight" TYPE="RADIO" VALUE= "A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> A JSP page</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="eight" TYPE="RADIO" VALUE= "B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> A JavaBean</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="eight" TYPE="RADIO" VALUE= "C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> A servlet</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="eight" TYPE="RADIO" VALUE= "D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> A session manager</FONT></TD></TR> </TABLE>
<P> <!-- Question 9 -->
<LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif">What is the difference between doing an <I>include</I> or a <I>forward</I> with a <CODE>RequestDispatcher</CODE>?</FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="nine" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> The forward method transfers control to the designated resource, while the include method invokes the designated resource, substitutes its output dynamically in the display, and returns control to the calling page.</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="nine" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> The two methods provide the same functionality, but with different levels of persistence</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="nine" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> The forward method is deprecated as of JSP 1.1 and the include method should be used in order to substitue portions of a dynamic display at runtime</FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="nine" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> The include method transfers control to a dynamic resource, while the forward method allows for dynamic substitution of another JPS pages output, returning control to the calling resource</FONT></TD></TR> </TABLE>
<P> <!-- Question 10 --> <LI><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> What line of code below might be combined in the same JSP page with a validation guard (for example,<code> <% bean.validationGuard(); %></code> ), in order to create an alternate flow of control for scenarios in which exceptions arise. The <code>validationGaurd</code> method might throw an exception, which should cause the flow of control to continue in another user-defined page (assume JSP 1.0)</FONT> <BR> <TABLE BORDER="0" CELLPADDING="5" CELLSPACING="0"> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="ten" TYPE="RADIO" VALUE="A"> A.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> <CODE><jsp:error page="errorPage.jsp" guard="true" /></CODE></FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="ten" TYPE="RADIO" VALUE="B"> B.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> <CODE><%@ page language="java" buffer="8k" %></CODE> </FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="ten" TYPE="RADIO" VALUE="C"> C.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"> <CODE><jsp:useBean id="bean" class="examples.Bean" scope="request" /></CODE></FONT></TD></TR> <TR><TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><INPUT NAME="ten" TYPE="RADIO" VALUE="D"> D.</FONT></TD> <TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif"><CODE> <%@ page language="java" errorPage="errorPage.jsp" buffer="8k" %></CODE></FONT></TD></TR> </TABLE>