1<table border="0" cellpadding="0" cellspacing="0">
2<tr>
3<td valign="TOP"><font face="Verdana, Arial, Helvetica, sans-serif">
4<div align="RIGHT">
5<font size="-1"><a href="/developer/Quizzes/index.html">Quizzes
6Index</a></font></div>
7<h2 align="RIGHT"><font color="#FFFFFFF">JSP Professional, Chapter 12
8Quiz</font></h2>
9<h4 align="RIGHT"><em>by Dan Malks</em></h4>
10<table border="0" cellpadding="0" cellspacing="0">
11<tr><td>
12<img align="left" alt="Duke" height="115" src="penduke.gif" width="164"/>
13</td><td><font face="Verdana, Arial, Helvetica, sans-serif">
14The <i><a href="/developer/Books/jsp/index.html">JSP Professional: Chapter 12, JSP
15Archictecture</a></i> Test your knowledge on the differences between servlets
16and JSP, Factor Forward-Factor Back, page-centric verses the dispatcher
17approach, and more.
18</font></td></tr>
19</table>
20<hr/>
21<!-- Form calls the answer.jsp, which invokes the QuizResponses bean -->
22<form action="answer.jsp" method="POST">
23<ol>
24<!-- Question 1 -->
25<li><font face="Verdana, Arial, Helvetica, sans-serif">Choose the statement
26that best describes the relationship between JavaServer
27Pages<sup><font size="-2">TM</font></sup> (JSP<sup><font size="-2">TM</font></sup>)
28and servlets: </font>
29<br/>
30<table border="0" cellpadding="5" cellspacing="0">
31<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="one" type="RADIO" value="A"/> A.</font></td>
32<td><font face="Verdana, Arial, Helvetica, sans-serif">
33Servlets are built on JSP semantics and all servlets are compiled to JSP
34pages for runtime usage<br/></font></td></tr>
35<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="one" type="RADIO" value="B"/> B.</font></td>
36<td><font face="Verdana, Arial, Helvetica, sans-serif"> JSP and servlets are
37unrelated technologies</font></td></tr>
38<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="one" type="RADIO" value="C"/> C.</font></td>
39<td><font face="Verdana, Arial, Helvetica, sans-serif">Servlets and JSP are
40competing technologies for handling web requests. Servlets are being superceded
41by JSP, which is preferred. The two technologies are not useful in combination.
42</font></td></tr>
43<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="one" type="RADIO" value="D"/> D.</font></td>
44<td><font face="Verdana, Arial, Helvetica, sans-serif"> JSPs are built on
45servlet semantics and all JSPs are compiled to servlets for runtime usage
46</font></td></tr>
47</table>
48<p>
49<!-- Question 2 -->
50<li><font face="Verdana, Arial, Helvetica, sans-serif">What is a benefit of
51using JavaBeans<sup><font size="-2">TM</font></sup> to separate business logic
52from presentation markup within the JSP environment? </font>
53<br/>
54<table border="0" cellpadding="5" cellspacing="0">
55<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="two" type="RADIO" value="A"/> A.</font></td>
56<td>
57<font face="Verdana, Arial, Helvetica, sans-serif"> It allows the JSP to
58access middleware </font></td></tr>
59<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="two" type="RADIO" value="B"/> B.</font></td>
60<td><font face="Verdana, Arial, Helvetica, sans-serif">It creates a cleaner
61role separation between the web-production team and the software development
62team, so that the web-production team can focus on presentation markup, while
63the software team can focus on building reusable software components for helping
64to generate dynamic displays </font></td></tr>
65<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="two" type="RADIO" value="C"/> C.</font></td>
66<td><font face="Verdana, Arial, Helvetica, sans-serif">It provides a dynamic
67markup environment, such that JavaBeans are integrated seamlessly with the
68template presentation content, in order to create the dynamic display for the
69client
70</font></td></tr>
71<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="two" type="RADIO" value="D"/> D.</font></td>
72<td><font face="Verdana, Arial, Helvetica, sans-serif">It provides the
73developer with full access to the Java<sup><font size="-2">TM</font></sup> 2
74Platform Enterprise Edition (J2EE<sup><font size="-2">TM</font></sup>),
75which is unavailable from outside the JavaBean environment </font></td></tr>
76</table>
77<p>
78<!-- Question 3 -->
79<li><font face="Verdana, Arial, Helvetica, sans-serif">Why use the
80<code>RequestDispatcher</code> to forward a request to another resource,
81instead of doing a <code>sendRedirect</code>? </font>
82<br/>
83<table border="0" cellpadding="5" cellspacing="0">
84<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="three" type="RADIO" value="A"/> A.</font></td>
85<td><font face="Verdana, Arial, Helvetica, sans-serif"> Redirects are no
86longer supported in the current servlet API</font></td></tr>
87<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="three" type="RADIO" value="B"/> B.</font></td>
88<td><font face="Verdana, Arial, Helvetica, sans-serif"> Redirects are not a
89cross-platform portable mechanism</font></td></tr>
90<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="three" type="RADIO" value="C"/> C.</font></td>
91<td><font face="Verdana, Arial, Helvetica, sans-serif"> The <code>RequestDispatcher</code>
92does not use the reflection API</font></td></tr>
93<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="three" type="RADIO" value="D"/> D.</font></td>
94<td><font face="Verdana, Arial, Helvetica, sans-serif"> The
95<code>RequestDispatcher</code> does not require a round trip to the client, and
96thus is more efficient and allows the server to maintain request
97state</font></td></tr>
98</table>
99<p>
100<!-- Question 4 -->
101<li><font face="Verdana, Arial, Helvetica, sans-serif">What alternatives exist
102to embedding Java code directly within the HTML markup of your JSP page?</font>
103<br/>
104<table border="0" cellpadding="5" cellspacing="0">
105<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="four" type="RADIO" value="A"/> A.</font></td>
106<td><font face="Verdana, Arial, Helvetica, sans-serif"> Moving the code into
107your session manager</font></td></tr>
108<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="four" type="RADIO" value="B"/> B.</font></td>
109<td><font face="Verdana, Arial, Helvetica, sans-serif"> Moving the code into
110sciptlets</font></td></tr>
111<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="four" type="RADIO" value="C"/> C.</font></td>
112<td><font face="Verdana, Arial, Helvetica, sans-serif"> Moving the code into
113JavaBeans and servlets</font></td></tr>
114<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="four" type="RADIO" value="D"/> D.</font></td>
115<td><font face="Verdana, Arial, Helvetica, sans-serif"> Moving the code into a
116transaction manager</font></td></tr>
117</table>
118<p>
119<!-- Question 5 -->
120<li><font face="Verdana, Arial, Helvetica, sans-serif"> What type of scriptlet
121code is better-suited to being <i>factored forward</i> into a servlet?
122</font>
123<br/>
124<table border="0" cellpadding="5" cellspacing="0">
125<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="five" type="RADIO" value="A"/> A.</font></td>
126<td><font face="Verdana, Arial, Helvetica, sans-serif">Code that deals
127with logic that is common across requests</font></td></tr>
128<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="five" type="RADIO" value="B"/> B.</font></td>
129<td><font face="Verdana, Arial, Helvetica, sans-serif">Code that deals
130with logic that is vendor specific</font></td></tr>
131<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="five" type="RADIO" value="C"/> C.</font></td>
132<td><font face="Verdana, Arial, Helvetica, sans-serif">Code that deals
133with logic that relates to database access</font></td></tr>
134<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="five" type="RADIO" value="D"/> D.</font></td>
135<td><font face="Verdana, Arial, Helvetica, sans-serif">Code that deals
136with logic that relates to client scope</font></td></tr>
137</table>
138<p>
139<!-- Question 6 -->
140<li><font face="Verdana, Arial, Helvetica, sans-serif">Choose the statement that
141best describes how to connect JSP pages and EJBs</font>
142<br/>
143<table border="0" cellpadding="5" cellspacing="0">
144<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="six" type="RADIO" value="A"/> A.</font></td>
145<td><font face="Verdana, Arial, Helvetica, sans-serif">Lookup the EJBs from
146within a JSP, but use the EJBs from within a basic JavaBean</font></td></tr>
147<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="six" type="RADIO" value="B"/> B.</font></td>
148<td><font face="Verdana, Arial, Helvetica, sans-serif">Lookup and use the EJBs
149from a separate business delegate. The JavaBeans that work with JSP pages are
150clients to these business delegates and know nothing about EJB
151specifics</font></td></tr>
152<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="six" type="RADIO" value="C"/> C.</font></td>
153<td><font face="Verdana, Arial, Helvetica, sans-serif"> Lookup and use the
154EJBs from within a JSP page, but only as remote references</font></td></tr>
155<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="six" type="RADIO" value="D"/> D.</font></td>
156<td><font face="Verdana, Arial, Helvetica, sans-serif">Lookup the EJBs from
157within a servlet, delegating usage to specific JSP pages</font></td></tr>
158</table>
159<p>
160<!-- Question 7 -->
161<li><font face="Verdana, Arial, Helvetica, sans-serif"> Are custom tags
162available in JSP 1.0? If not, how else might you implement iteration from
163within a JSP? </font>
164<br/>
165<table border="0" cellpadding="5" cellspacing="0">
166<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="seven" type="RADIO" value="A"/> A.</font></td>
167<td><font face="Verdana, Arial, Helvetica, sans-serif"> Yes, but the only tags
168available relate to database access</font></td></tr>
169<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="seven" type="RADIO" value="B"/> B.</font></td>
170<td><font face="Verdana, Arial, Helvetica, sans-serif"> No. To iterate over a
171collection of values, one must use scriptlet code</font></td></tr>
172<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="seven" type="RADIO" value="C"/> C.</font></td>
173<td><font face="Verdana, Arial, Helvetica, sans-serif"> No, but there is a
174standard <iterate> tag that may be used</font></td></tr>
175<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="seven" type="RADIO" value="D"/> D.</font></td>
176<td><font face="Verdana, Arial, Helvetica, sans-serif"> Yes, but custom tags
177will not help developers create tags for use in iterating over a
178collection</font></td></tr>
179</table>
180<p>
181<!-- Question 8 -->
182<li><font face="Verdana, Arial, Helvetica, sans-serif"> What is the initial
183contact point for handling a web request in a <i>Page-Centric</i> architecture?
184</font>
185<br/>
186<table border="0" cellpadding="5" cellspacing="0">
187<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="eight" type="RADIO" value="A"/> A.</font></td>
188<td><font face="Verdana, Arial, Helvetica, sans-serif"> A JSP
189page</font></td></tr>
190<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="eight" type="RADIO" value="B"/> B.</font></td>
191<td><font face="Verdana, Arial, Helvetica, sans-serif"> A
192JavaBean</font></td></tr>
193<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="eight" type="RADIO" value="C"/> C.</font></td>
194<td><font face="Verdana, Arial, Helvetica, sans-serif"> A
195servlet</font></td></tr>
196<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="eight" type="RADIO" value="D"/> D.</font></td>
197<td><font face="Verdana, Arial, Helvetica, sans-serif"> A session
198manager</font></td></tr>
199</table>
200<p>
201<!-- Question 9 -->
202<li><font face="Verdana, Arial, Helvetica, sans-serif">What is the difference
203between doing an <i>include</i> or a <i>forward</i> with a
204<code>RequestDispatcher</code>?</font>
205<br/>
206<table border="0" cellpadding="5" cellspacing="0">
207<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="nine" type="RADIO" value="A"/> A.</font></td>
208<td><font face="Verdana, Arial, Helvetica, sans-serif"> The forward method
209transfers control to the designated resource, while the include method invokes
210the designated resource, substitutes its output dynamically in the display, and
211returns control to the calling page.</font></td></tr>
212<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="nine" type="RADIO" value="B"/> B.</font></td>
213<td><font face="Verdana, Arial, Helvetica, sans-serif"> The two methods
214provide the same functionality, but with different levels of
215persistence</font></td></tr>
216<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="nine" type="RADIO" value="C"/> C.</font></td>
217<td><font face="Verdana, Arial, Helvetica, sans-serif"> The forward method is
218deprecated as of JSP 1.1 and the include method should be used in order to
219substitue portions of a dynamic display at runtime</font></td></tr>
220<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="nine" type="RADIO" value="D"/> D.</font></td>
221<td><font face="Verdana, Arial, Helvetica, sans-serif"> The include method
222transfers control to a dynamic resource, while the forward method allows for
223dynamic substitution of another JPS pages output, returning control to the
224calling resource</font></td></tr>
225</table>
226<p>
227<!-- Question 10 -->
228<li><font face="Verdana, Arial, Helvetica, sans-serif"> What line of code below
229might be combined in the same JSP page with a validation guard (for
230example,<code> <% bean.validationGuard(); %></code> ), in order to create
231an alternate flow of control for scenarios in which exceptions arise. The
232<code>validationGaurd</code> method might throw an exception, which should cause
233the flow of control to continue in another user-defined page (assume JSP
2341.0)</font>
235<br/>
236<table border="0" cellpadding="5" cellspacing="0">
237<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="ten" type="RADIO" value="A"/> A.</font></td>
238<td><font face="Verdana, Arial, Helvetica, sans-serif"> <code><jsp:error
239page="errorPage.jsp" guard="true" /></code></font></td></tr>
240<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="ten" type="RADIO" value="B"/> B.</font></td>
241<td><font face="Verdana, Arial, Helvetica, sans-serif"> <code><%@ page
242language="java" buffer="8k" %></code>
243</font></td></tr>
244<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="ten" type="RADIO" value="C"/> C.</font></td>
245<td><font face="Verdana, Arial, Helvetica, sans-serif"> <code><jsp:useBean
246id="bean" class="examples.Bean" scope="request" /></code></font></td></tr>
247<tr><td><font face="Verdana, Arial, Helvetica, sans-serif"><input name="ten" type="RADIO" value="D"/> D.</font></td>
248<td><font face="Verdana, Arial, Helvetica, sans-serif"><code> <%@ page
249language="java" errorPage="errorPage.jsp" buffer="8k"
250%></code></font></td></tr>
251</table>
252</li></p></li></p></li></p></li></p></li></p></li></p></li></p></li></p></li></p></li></ol>
253<p>
254<div align="CENTER">
255<input type="SUBMIT" value="Submit"/>
256<input type="RESET"/>
257</div>
258</p></form>
259</font>
260</td>
261</tr>
262</table>