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>