Forums Register Login

jsp:useBean and default scope (head first mock exam question)

+Pie Number of slices to send: Send
Hi all,

the below question is from Head First book, mock exam question 4. It's saying that C and D are the correct answers but I
would argue, strictly speaking that none of the below are correct. The reason being that the servlet code stores the 'user' in
request scope but all of the jsp:useBean snippets search in page scope (as page scope is the default scope of jsp:useBean if no scope is explicitly defined).

Any thoughts would be good? Thanks, Ronan.

A Servlet sets up a bean before forwarding to a JSP.
Given:

foo.User user = new foo.User();
user.setFirst(request.getParameter("firstName"));
user.setLast(request.getParameter("lastName"));
user.setStreet(request.getParameter("streetAddress"));
user.setCity(request.getParameter("city"));
user.setState(request.getParameter("state"));
user.setZipCode(request.getParameter("zipCode"));
request.setAttribute("user", user);

What snippet, if placed in a JSP, could replace the Servlet code above? (Choose all that apply.)

A. <jsp:useBean id="user" type="foo.User"/>

B. <jsp:useBean id="user" type="foo.User">
<jsp:setProperty name="user" property="*"/>
</jsp:useBean>

C.
<jsp:useBean id="user" class="foo.User">
<jsp:setProperty name="user" property="first" param="firstName"/>
<jsp:setProperty name="user" property="last" param="lastName"/>
<jsp:setProperty name="user" property="street" param="streetAddress"/>
<jsp:setProperty name="user" property="city"/>
<jsp:setProperty name="user" property="state"/>
<jsp:setProperty name="user" property="zipCode"/>
</jsp:useBean>

D. <jsp:useBean id="user" class="foo.User">
<jsp:setProperty name="user" property="*"/>
<jsp:setProperty name="user" property="first" param="firstName"/>
<jsp:setProperty name="user" property="last" param="lastName"/>
<jsp:setProperty name="user" property="street" param="streetAddress"/>
</jsp:useBean>
+Pie Number of slices to send: Send
Hi Ronan,

I agree: the scope should have been put explicitely to "request".

Regards,
Frits
+Pie Number of slices to send: Send
I guess this is the correct version of the question.


A Servlet sets up a bean before forwarding to a JSP.
Given:
20. foo.User user = new foo.User();
21. user.setFirst(request.getParameter("firstName"));
22. user.setLast(request.getParameter("lastName"));
23. user.setStreet(request.getParameter("streetAddress"));
24. user.setCity(request.getParameter("city"));
25. user.setState(request.getParameter("state"));
26. user.setZipCode(request.getParameter("zipCode"));
27. request.setAttribute("user", user);

What snippet, if placed in a JSP, could replace the Servlet code above? (Choose all that apply.)
A. <jsp:useBean id="user" type="foo.User"/ scope="request">

B. <jsp:useBean id="user" type="foo.User" scope="request">
<jsp:setProperty name="user" property="*"/>
</jsp:useBean>

C. <jsp:useBean id="user" class="foo.User" scope="request">
<jsp:setProperty name="user" property="first" param="firstName"/>
<jsp:setProperty name="user" property="last" param="lastName"/>
<jsp:setProperty name="user" property="street" param="streetAddress"/>
<jsp:setProperty name="user" property="city"/>
<jsp:setProperty name="user" property="state"/>
<jsp:setProperty name="user" property="zipCode"/>
</jsp:useBean>

D. <jsp:useBean id="user" class="foo.User" scope="request">
<jsp:setProperty name="user" property="*"/>
<jsp:setProperty name="user" property="first" param="firstName"/>
<jsp:setProperty name="user" property="last" param="lastName"/>
<jsp:setProperty name="user" property="street" param="streetAddress"/>
</jsp:useBean>



Thanks
Shobhan
+Pie Number of slices to send: Send
 

Ronan Dowd wrote:Hi all,

the below question is from Head First book, mock exam question 4. It's saying that C and D are the correct answers but I
would argue, strictly speaking that none of the below are correct. The reason being that the servlet code stores the 'user' in
request scope but all of the jsp:useBean snippets search in page scope (as page scope is the default scope of jsp:useBean if no scope is explicitly defined).

Any thoughts would be good? Thanks, Ronan.



Ronan,

Check out the Errata page of this book.

If you search for "page 794" & scroll down to it, this is what the question-submitter & the authors have to say about this question:
The sample code in question, set the attribute in request scope. And equivalent code snippet answers are given as C & D. But those two answers create the attribute in page scope (default scope), but not in request scope. scope = 'request' is missing in those two answers.

Note from the Author or Editor:This is correct. The text [scope="request"] must be added to the open jsp:useBean tag for *all* options (not just C&D, because this is really an invariant to the question).
Heroic work plunger man. Please allow me to introduce you to this tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 5114 times.
Similar Threads
jspSetProperty Doubt??
Error in JSP page: org.apache.jasper.JasperException
HTTP ERROR: 500
Do we consider Escape chars in Exam or not?
Bean or Servlet
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 29, 2024 01:39:33.