Friday, 16 December 2011

SCWCD Questions 41-50


QUESTION NO: 41


Which three are valid URL mappings to a servlet in a web deployment descriptor? (Choose three.)

A. */*
B. *.do
C. MyServlet
D. /MyServlet
E. /MyServlet/*
F. MyServlet/*.jsp

Answer: B,D,E


QUESTION NO: 42 DRAG DROP
Click the Task button.
Place the appropriate element names on the left on the web application deployment descriptor on
the right so that files ending in ".mpg" are associated with the MIME type "video/mpeg."

Answer:


Explanation:


QUESTION NO: 43

Which three web application deployment descriptor elements allow web components to gain
references to resources or EJB components? (Choose three.)
A. ejb-ref
B. jdbc-ref
C. servlet-ref
D. resource-ref
E. javamail-ref
F. ejb-remote-ref
G. resource-env-ref

Answer: A,D,G

QUESTION NO: 44

After a merger with another small business, your company has inherited a legacy WAR file but the
original source files were lost. After reading the documentation of that web application, you
discover that the WAR file contains a useful tag library that you want to reuse in your own webapp
packaged as a WAR file.
What do you need to do to reuse this tag library?
A. Simply rename the legacy WAR file as a JAR file and place it in your webapp's library directory.
B. Unpack the legacy WAR file, move the TLD file to the META-INF directory, repackage the
whole thing as a JAR file, and place that JAR file in your webapp's library directory.
C. Unpack the legacy WAR file, move the TLD file to the META-INF directory, move the class files
to the top-level directory, repackage the whole thing as a JAR file, and place that JAR file in your
webapp's library directory.
D. Unpack the legacy WAR file, move the TLD file to the META-INF directory, move the class files
to the top-level directory, repackage the WAR, and place that WAR file in your webapp's WEB-INF
directory.

Answer: C

QUESTION NO: 45

Which two actions protect a resource file from direct HTTP access within a web application?
(Choose two.)
A. placing it in the /secure directory
B. placing it in the /WEB-INF directory
C. placing it in the /META-INF/secure directory
D. creating a <web-resource> element within the deployment descriptor
E. creating a <secure-resource> element within the deployment descriptor

Answer: B,C

QUESTION NO: 46

Given that www.example.com/SCWCDtestApp is a validly deployed Java EE web application and
that all of the JSP files specified in the requests below exist in the locations specified. Which two
requests, issued from a browser, will return an HTTP 404 error? (Choose two.)
A. http://www.example.com/SCWCDtestApp/test.jsp
B. http://www.example.com/SCWCDtestApp/WEB-INF/test.jsp
C. http://www.example.com/SCWCDtestApp/WEB-WAR/test.jsp
D. http://www.example.com/SCWCDtestApp/Customer/test.jsp
E. http://www.example.com/SCWCDtestApp/META-INF/test.jsp
F. http://www.example.com/SCWCDtestApp/Customer/Update/test.jsp

Answer: B,E

QUESTION NO: 47

Which two about WAR files are true? (Choose two.)
A. WAR files must be located in the web application library directory.
B. WAR files must contain the web application deployment descriptor.
C. WAR files must be created by using archive tools designed specifically for that purpose.
D. The web container must serve the content of any META-INF directory located in a WAR file.
E. The web container must allow access to resources in JARs in the web application library
directory.

Answer: B,E

QUESTION NO: 48

Given this fragment from a Java EE deployment descriptor:
124. <welcome-file>beta.html</welcome-file>
125. <welcome-file>alpha.html</welcome-file>
And this request from a browser:
http://www.sun.com/SCWCDtestApp/register
Which statement is correct, when the container receives this request?
A. This deployment descriptor is NOT valid.
B. The container first looks in the register directory for beta.html.
C. The container first looks in the register directory for alpha.html.
D. The container first looks for a servlet mapping in the deployment descriptor.

Answer: D

QUESTION NO: 49

Which EL expression evaluates to the request URI?
A. ${requestURI}
B. ${request.URI}
C. ${request.getURI}
D. ${request.requestURI}
E. ${requestScope.requestURI}
F. ${pageContext.request.requestURI}
G. ${requestScope.request.requestURI}

Answer: F

QUESTION NO: 50

Given:
1. <% int[] nums = {42,420,4200};
2. request.setAttribute("foo", nums); %>
3. ${5 + 3 lt 6}
4. ${requestScope['foo'][0] ne 10 div 0}
5. ${10 div 0}
What is the result?
A. true true
B. false true
C. false true 0
D. true true Infinity
E. false true Infinity
F. An exception is thrown.
G. Compilation or translation fails.

Answer: E


SCWCD Questions 31-40


QUESTION NO: 31


Which three are true about TLD files? (Choose three.)
A. The web container recognizes TLD files placed in any subdirectory of WEB-INF.
B. When deployed inside a JAR file, TLD files must be in the META-INF directory, or a
subdirectory of it.
C. A tag handler's attribute must be included in the TLD file only if the attribute can accept
request-time expressions.
D. The web container can generate an implicit TLD file for a tag library comprised of both simple
tag handlers and tag files.
E. The web container can automatically extend the tag library map described in a web.xml file by
including entries extracted from the web application's TLD files.

Answer: A,B,E


QUESTION NO: 32


Your management has required that all JSPs be created to generate XHTML-compliant content
and to facilitate that decision, you are required to create all JSPs using the JSP Document format.
In the reviewOrder.jspx page, you need to use several core JSTL tags to process the collection of
order items in the customer's shopping cart. Which JSP code snippets must you use in the
reviewOrder.jspx page?
A. <html xmlns:jsp="http://java.sun.com/JSP/Page"
version="2.0">
<jsp:directive.taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" />
<!-- page content -->
</html>
B. <html xmlns:jsp="http://java.sun.com/JSP/Page"
version="2.0"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<!-- page content -->
</html>
C. <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
version="2.0">
<jsp:directive.taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" />
<!-- page content -->
</jsp:root>
D. <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
version="2.0"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<!-- page content -->
</jsp:root>

Answer: D


QUESTION NO: 33


Which two JSTL URL-related tags perform URL rewriting? (Choose two.)
A. url
B. link
C. param
D. import
E. redirect

Answer: A,E


QUESTION NO: 34


A custom JSP tag must be able to support an arbitrary number of attributes whose names are
unknown when the tag class is designed. Which two are true? (Choose two.)
A. The <body-content> element in the echo tag TLD must have the value JSP.
B. The echo tag handler must define the setAttribute(String key, String value) method.
C. The <dynamic-attributes>true</dynamic-attributes> element must appear in the echo tag TLD.
D. The class implementing the echo tag handler must implement the
javax.servlet.jsp.tagext.IterationTag interface.
E. The class implementing the echo tag handler must implement the
javax.servlet.jsp.tagext.DynamicAttributes interface.

Answer: C,E


QUESTION NO: 35
A developer has used this code within a servlet:
62. if(request.isUserInRole("vip")) {
63. // VIP-related logic here
64. }
What else must the developer do to ensure that the intended security goal is achieved?
A. create a user called vip in the security realm
B. define a group within the security realm and call it vip
C. define a security-role named vip in the deployment descriptor
D. declare a security-role-ref for vip in the deployment descriptor

Answer: D


QUESTION NO: 36


Given:
3. class MyServlet extends HttpServlet {
4. public void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
5. // servlet code here ...
26. }
27. }
If the DD contains a single security constraint associated with MyServlet and its only <httpmethod>
tags and <auth-constraint> tags are:
<http-method>GET</http-method>
<http-method>PUT</http-method>
<auth-constraint>Admin</auth-constraint>
Which four requests would be allowed by the container? (Choose four.)
A. A user whose role is Admin can perform a PUT.
B. A user whose role is Admin can perform a GET.
C. A user whose role is Admin can perform a POST.
D. A user whose role is Member can perform a PUT.
E. A user whose role is Member can perform a POST.
F. A user whose role is Member can perform a GET.

Answer: A,B,C,E


QUESTION NO: 37


What is true about Java EE authentication mechanisms?
A. If your deployment descriptor correctly declares an authentication type of CLIENT_CERT, your
users must have a certificate from an official source before they can use your application.
B. If your deployment descriptor correctly declares an authentication type of BASIC, the container
automatically requests a user name and password whenever a user starts a new session.
C. If you want your web application to support the widest possible array of browsers, and you want
to perform authentication, the best choice of Java EE authentication mechanisms is DIGEST.
D. To use Java EE FORM authentication, you must declare two HTML files in your deployment
descriptor, and you must use a predefined action in the HTML file that handles your user's login.

Answer: D


QUESTION NO: 38


If you want to use the Java EE platform's built-in type of authentication that uses a custom HTML
page for authentication, which two statements are true? (Choose two.)
A. Your deployment descriptor will need to contain this tag:
<auth-method>CUSTOM</auth-method>.
B. The related custom HTML login page must be named loginPage.html.
C. When you use this type of authentication, SSL is turned on automatically.
D. You must have a tag in your deployment descriptor that allows you to point to both a login
HTML page and an HTML page for handling any login errors.
E. In the HTML related to authentication for this application, you must use predefined variable
names for the variables that store the user and password values.

Answer: D,E


QUESTION NO: 39


Given this fragment in a servlet:
23. if(req.isUserInRole("Admin")) {
24. // do stuff
25. }
And the following fragment from the related Java EE deployment descriptor:
812. <security-role-ref>
813. <role-name>Admin</role-name>
814. <role-link>Administrator</role-link>
815. </security-role-ref>
900. <security-role>
901. <role-name>Admin</role-name>
902. <role-name>Administrator</role-name>
903. </security-role>

What is the result?
A. Line 24 can never be reached.
B. The deployment descriptor is NOT valid.
C. If line 24 executes, the user's role will be Admin.
D. If line 24 executes, the user's role will be Administrator.
E. If line 24 executes the user's role will NOT be predictable.

Answer: D


QUESTION NO: 40


Given the security constraint in a DD:
101. <security-constraint>
102. <web-resource-collection>
103. <web-resource-name>Foo</web-resource-name>
104. <url-pattern>/Bar/Baz/*</url-pattern>
105. <http-method>POST</http-method>
106. </web-resource-collection>
107. <auth-constraint>
108. <role-name>DEVELOPER</role-name>
109. </auth-constraint>
110. </security-constraint>
And given that "MANAGER" is a valid role-name, which four are true for this security constraint?
(Choose four.)
A. MANAGER can do a GET on resources in the /Bar/Baz directory.
B. MANAGER can do a POST on any resource in the /Bar/Baz directory.
C. MANAGER can do a TRACE on any resource in the /Bar/Baz directory.
D. DEVELOPER can do a GET on resources in the /Bar/Baz directory.
E. DEVELOPER can do only a POST on resources in the /Bar/Baz directory.
F. DEVELOPER can do a TRACE on any resource in the /Bar/Baz directory.

Answer: A,C,D,F

SCWCD Questions 21-30


QUESTION NO: 21


You need to store a Java long primitive attribute, called customerOID, into the session scope.
Which two code snippets allow you to insert this value into the session? (Choose two.)
A. long customerOID = 47L;
session.setAttribute("customerOID", new Long(customerOID));
B. long customerOID = 47L;
session.setLongAttribute("customerOID", new Long(customerOID));
C. long customerOID = 47L;
session.setAttribute("customerOID", customerOID);
D. long customerOID = 47L;
session.setNumericAttribute("customerOID", new Long(customerOID));
E. long customerOID = 47L;
session.setLongAttribute("customerOID", customerOID);
F. long customerOID = 47L;
session.setNumericAttribute("customerOID", customerOID);

Answer: A,C


QUESTION NO: 22


A developer for the company web site has been told that users may turn off cookie support in their
browsers. What must the developer do to ensure that these customers can still use the web
application?
A. The developer must ensure that every URL is properly encoded using the appropriate URL
rewriting APIs.
B. The developer must provide an alternate mechanism for managing sessions and abandon the
HttpSession mechanism entirely.
C. The developer can ignore this issue. Web containers are required to support automatic URL
rewriting when cookies are not supported.
D. The developer must add the string id=<sessionid> to the end of every URL to ensure that the
conversation with the browser can continue.

Answer: A


QUESTION NO: 23


Your web application requires the adding and deleting of many session attributes during a
complex use case. A bug report has come in that indicates that an important session attribute is
being deleted too soon and a NullPointerException is being thrown several interactions after the
fact. You have decided to create a session event listener that will log when attributes are being
deleted so you can track down when the attribute is erroneously being deleted.
Which listener class will accomplish this debugging goal?
A. Create an HttpSessionAttributeListener class and implement the attributeDeleted method and
log the attribute name using the getName method on the event object.
B. Create an HttpSessionAttributeListener class and implement the attributeRemoved method and
log the attribute name using the getName method on the event object.
C. Create an SessionAttributeListener class and implement the attributeRemoved method and log
the attribute name using the getAttributeName method on the event object.
D. Create an SessionAttributeListener class and implement the attributeDeleted method and log
the attribute name using the getAttributeName method on the event object.

Answer: B


QUESTION NO: 24


As a convenience feature, your web pages include an Ajax request every five minutes to a special
servlet that monitors the age of the user's session. The client-side JavaScript that handles the
Ajax callback displays a message on the screen as the session ages. The Ajax call does NOT
pass any cookies, but it passes the session ID in a request parameter called sessionID. In
addition, assume that your webapp keeps a hashmap of session objects by the ID. Here is a
partial implementation of this servlet:
10. public class SessionAgeServlet extends HttpServlet {
11. public void service(HttpServletRequest request, HttpServletResponse) throws IOException {
12. String sessionID = request.getParameter("sessionID");
13. HttpSession session = getSession(sessionID);
14. long age = // your code here
15. response.getWriter().print(age);
16. } ... // more code here
47. }
Which code snippet on line 14, will determine the age of the session?
A. session.getMaxInactiveInterval();
B. session.getLastAccessed().getTime() - session.getCreationTime().getTime();
C. session.getLastAccessedTime().getTime() - session.getCreationTime().getTime();
D. session.getLastAccessed() - session.getCreationTime();
E. session.getMaxInactiveInterval() - session.getCreationTime();
F. session.getLastAccessedTime() - session.getCreationTime();

Answer: F


QUESTION NO: 25


Which statement is true about web container session management?
A. Access to session-scoped attributes is guaranteed to be thread-safe by the web container.
B. To activate URL rewriting, the developer must use the HttpServletResponse.setURLRewriting
method.
C. If the web application uses HTTPS, then the web container may use the data on the HTTPS
request stream to identify the client.
D. The JSESSIONID cookie is stored permanently on the client so that a user may return to the
web application and the web container will rejoin that session.

Answer: C


QUESTION NO: 26


One of the use cases in your web application uses many session-scoped attributes. At the end of
the use case, you want to clear out this set of attributes from the session object. Assume that this
static variable holds this set of attribute names:
201. private static final Set<String> USE_CASE_ATTRS;
202. static {
203. USE_CASE_ATTRS.add("customerOID");
204. USE_CASE_ATTRS.add("custMgrBean");
205. USE_CASE_ATTRS.add("orderOID");
206. USE_CASE_ATTRS.add("orderMgrBean");
207. }
Which code snippet deletes these attributes from the session object?
A. session.removeAll(USE_CASE_ATTRS);
B. for ( String attr : USE_CASE_ATTRS ) {
session.remove(attr);
}
C. for ( String attr : USE_CASE_ATTRS ) {
session.removeAttribute(attr);
}
D. for ( String attr : USE_CASE_ATTRS ) {
session.deleteAttribute(attr);
}
E. session.deleteAllAttributes(USE_CASE_ATTRS);

Answer: C


QUESTION NO: 27


Assume that a news tag library contains the tags lookup and item:
lookup Retrieves the latest news headlines and executes the tag body once for each headline.
Exposes a NESTED page-scoped attribute called headline of type com.example.Headline
containing details for that headline.
item Outputs the HTML for a single news headline. Accepts an attribute info of type
com.example.Headline containing details for the headline to be rendered.Which snippet of JSP
code returns the latest news headlines in an HTML table, one per row?
A. <table>
<tr>
<td>
<news:lookup />
<news:item info="${headline}" />
</td>
</tr>
</table>
B. <news:lookup />
<table>
<tr>
<td><news:item info="${headline}" /></td>
</tr>
</table>
C. <table>
<news:lookup>
<tr>
<td><news:item info="${headline}" /></td>
</tr>
</news:lookup>
</table>
D. <table>
<tr>
<news:lookup>
<td><news:item info="${headline}" /></td>
</news:lookup>
</tr>
</table>

Answer: C

QUESTION NO: 28


Which JSTL code snippet can be used to perform URL rewriting?
A. <a href='<c:url url="foo.jsp"/>' />
B. <a href='<c:link url="foo.jsp"/>' />
C. <a href='<c:url value="foo.jsp"/>' />
D. <a href='<c:link value="foo.jsp"/>' />

Answer: C


QUESTION NO: 29


Assume the scoped attribute priority does NOT yet exist. Which two create and set a new requestscoped
attribute priority to the value "medium"? (Choose two.)
A. ${priority = 'medium'}
B. ${requestScope['priority'] = 'medium'}
C. <c:set var="priority" value="medium" />
D. <c:set var="priority" scope="request">medium</c:set>
E. <c:set var="priority" value="medium" scope="request" />
F. <c:set property="priority" scope="request">medium</c:set>
G. <c:set property="priority" value="medium" scope="request" />

Answer: D,E


QUESTION NO: 30


You are creating a JSP page to display a collection of data. This data can be displayed in several
different ways so the architect on your project decided to create a generic servlet that generates a
comma-delimited string so that various pages can render the data in different ways. This servlet
takes on request parameter: objectID. Assume that this servlet is mapped to the URL pattern:
/WEB-INF/data.
In the JSP you are creating, you need to split this string into its elements separated by commas
and generate an HTML <ul> list from the data.
Which JSTL code snippet will accomplish this goal?

A. <c:import varReader='dataString' url='/WEB-INF/data'>
<c:param name='objectID' value='${currentOID}' />
</c:import>
<ul>
<c:forTokens items'${dataString.split(",")}' var='item'>
<li>${item}</li>
</c:forTokens>
</ul>
B. <c:import varReader='dataString' url='/WEB-INF/data'>
<c:param name='objectID' value='${currentOID}' />
</c:import>
<ul>
<c:forTokens items'${dataString}' delims=',' var='item'>
<li>${item}</li>
</c:forTokens>
</ul>
C. <c:import var='dataString' url='/WEB-INF/data'>
<c:param name='objectID' value='${currentOID}' />
</c:import>
<ul>
<c:forTokens items'${dataString.split(",")}' var='item'>
<li>${item}</li>
</c:forTokens>
</ul>
D. <c:import var='dataString' url='/WEB-INF/data'>
<c:param name='objectID' value='${currentOID}' />
</c:import>
<ul>
<c:forTokens items'${dataString}' delims=',' var='item'>
<li>${item}</li>
</c:forTokens>
</ul>

Answer: D

SCWCD Questions 11-20


QUESTION NO: 11


Which two statements about tag files are true? (Choose two.)
A. Classic tag handlers and tag files CANNOT reside in the same tag library.
B. A file named foo.tag, located in /WEB-INF/tags/bar, is recognized as a tag file by the container.
C. A file named foo.tag, bundled in a JAR file but NOT defined in a TLD, triggers a container
translation error.
D. A file named foo.tag, located in a web application's root directory, is recognized as a tag file by
the container.
E. If files foo1.tag and foo2.tag both reside in /WEB-INF/tags/bar, the container will consider them
part of the same tag library.

Answer: B,E


QUESTION NO: 12


The sl:shoppingList and sl:item tags output a shopping list to the response and are used as
follows:
11. <sl:shoppingList>
12. <sl:item name="Bread" />
13. <sl:item name="Milk" />
14. <sl:item name="Eggs" />
15. </sl:shoppingList>
The tag handler for sl:shoppingList is ShoppingListTag and the tag handler for sl:item is
ItemSimpleTag.
ShoppingListTag extends BodyTagSupport and ItemSimpleTag extends SimpleTagSupport.
Which is true?

A. ItemSimpleTag can find the enclosing instance of ShoppingListTag by calling getParent() and
casting the result to ShoppingListTag.
B. ShoppingListTag can find the child instances of ItemSimpleTag by calling super.getChildren()
and casting each to an ItemSimpleTag.
C. It is impossible for ItemSimpleTag and ShoppingListTag to find each other in a tag hierarchy
because one is a Simple tag and the other is a Classic tag.
D. ShoppingListTag can find the child instances of ItemSimpleTag by calling getChildren() on the
PageContext and casting each to an ItemSimpleTag.
E. ItemSimpleTag can find the enclosing instance of ShoppingListTag by calling
findAncestorWithClass() on the PageContext and casting the result to ShoppingListTag.

Answer: A


QUESTION NO: 13


Servlet A receives a request that it forwards to servlet B within another web application in the
same web container. Servlet A needs to share data with servlet B and that data must not be visible
to other servlets in A's web application. In which object can the data that A shares with B be
stored?
A. HttpSession
B. ServletConfig
C. ServletContext
D. HttpServletRequest
E. HttpServletResponse

Answer: D


QUESTION NO: 14


Your web site has many user-customizable features, for example font and color preferences on
web pages. Your IT department has already built a subsystem for user preferences using the Java
SE platform's lang.util.prefs package APIs, and you have been ordered to reuse this subsystem in
your web application. You need to create an event listener that constructs the preferences factory
and stores it in the application scope for later use. Furthermore, this factory requires that the URL
to a database must be declared in the deployment descriptor like this:
42. <context-param>
43. <param-name>prefsDbURL</param-name>
44. <param-value>
45. jdbc:pointbase:server://dbhost:4747/prefsDB
46. </param-value>

47. </context-param>
Which partial listener class will accomplish this goal?
A. public class PrefsFactoryInitializer implements ContextListener {
public void contextInitialized(ServletContextEvent e) {
ServletContext ctx = e.getContext();
String prefsURL = ctx.getParameter("prefsDbURL");
PreferencesFactory myFactory = makeFactory(prefsURL);
ctx.putAttribute("myPrefsFactory", myFactory);
}
// more code here
}
B. public class PrefsFactoryInitializer implements ServletContextListener {
public void contextCreated(ServletContext ctx) {
String prefsURL = ctx.getInitParameter("prefsDbURL");
PreferencesFactory myFactory = makeFactory(prefsURL);
ctx.setAttribute("myPrefsFactory", myFactory);
}
// more code here
}
C. public class PrefsFactoryInitializer implements ServletContextListener {
public void contextInitialized(ServletContextEvent e) {
ServletContext ctx = e.getServletContext();
String prefsURL = ctx.getInitParameter("prefsDbURL");
PreferencesFactory myFactory = makeFactory(prefsURL);
ctx.setAttribute("myPrefsFactory", myFactory);
}
// more code here
}
D. public class PrefsFactoryInitializer implements ContextListener {
public void contextCreated(ServletContext ctx) {
String prefsURL = ctx.getParameter("prefsDbURL");
PreferencesFactory myFactory = makeFactory(prefsURL);
ctx.putAttribute("myPrefsFactory", myFactory);
}
// more code here
}

Answer: C



QUESTION NO: 15


A developer wants a web application to be notified when the application is about to be shut down.
Which two actions are necessary to accomplish this goal? (Choose two.)
A. include a listener directive in a JSP page
B. configure a listener in the TLD file using the <listener> element
C. include a <servlet-destroy> element in the web application deployment descriptor
D. configure a listener in the application deployment descriptor, using the <listener> element
E. include a class implementing ServletContextListener as part of the web application deployment
F. include a class implementing ContextDestroyedListener as part of the web application
deployment
G. include a class implementing HttpSessionAttributeListener as part of the web application
deployment

Answer: D,E


QUESTION NO: 16


You want to create a filter for your web application and your filter will implement
javax.servlet.Filter.
Which two statements are true? (Choose two.)
A. Your filter class must implement an init method and a destroy method.
B. Your filter class must also implement javax.servlet.FilterChain.
C. When your filter chains to the next filter, it should pass the same arguments it received in its
doFilter method.
D. The method that your filter invokes on the object it received that implements
javax.servlet.FilterChain can invoke either another filter or a servlet.
E. Your filter class must implement a doFilter method that takes, among other things, an
HTTPServletRequest object and an HTTPServletResponse object.

Answer: A,D


QUESTION NO: 17


Which three are true about the HttpServletRequestWrapper class? (Choose three.)
A. The HttpServletRequestWrapper is an example of the Decorator pattern.
B. The HttpServletRequestWrapper can be used to extend the functionality of a servlet request.
C. A subclass of HttpServletRequestWrapper CANNOT modify the behavior of the getReader
method.

D. An HttpServletRequestWrapper may be used only by a class implementing the
javax.servlet.Filter interface.
E. An HttpServletRequestWrapper CANNOT be used on the request passed to the
RequestDispatcher.include method.
F. An HttpServletRequestWrapper may modify the header of a request within an object
implementing the javax.servlet.Filter interface.

Answer: A,B,F


QUESTION NO: 18


Click the Exhibit button.
The resource requested by the RequestDispatcher is available and implemented by the
DestinationServlet.
What is the result?

A. An exception is thrown at runtime by SourceServlet.
B. An exception is thrown at runtime by DestinationServlet.
C. Only "hello from dest" appears in the response output stream.
D. Both "hello from source" and "hello from dest" appear in the response output stream.

Answer: A


QUESTION NO: 19


A developer wants to make a name attribute available to all servlets associated with a particular
user, across multiple requests from that user, from the same browser instance.
Which two provide this capability from within a tag handler? (Choose two.)

A. pageContext.setAttribute("name", theValue);
B. pageContext.setAttribute("name", getSession());
C. pageContext.getRequest().setAttribute("name", theValue);
D. pageContext.getSession().setAttribute("name", theValue);
E. pageContext.setAttribute("name", theValue,
PageContext.PAGE_SCOPE);
F. pageContext.setAttribute("name", theValue,
PageContext.SESSION_SCOPE);

Answer: D,F


QUESTION NO: 20


Given the definition of MyServlet:
11. public class MyServlet extends HttpServlet {
12. public void service(HttpServletRequest request,
13. HttpServletResponse response)
14. throws ServletException, IOException {
15. HttpSession session = request.getSession();
16 session.setAttribute("myAttribute","myAttributeValue");
17. session.invalidate();
18. response.getWriter().println("value=" +
19. session.getAttribute("myAttribute"));
20. }
21. }
What is the result when a request is sent to MyServlet?
A. An IllegalStateException is thrown at runtime.
B. An InvalidSessionException is thrown at runtime.
C. The string "value=null" appears in the response stream.
D. The string "value=myAttributeValue" appears in the response stream.

Answer: A






Cloning Interview questions


Q1) What are different types of cloning in Java?
Ans) Java supports two type of cloning: - Deep and shallow cloning. By default shallow copy is used in Java. Object class has a method clone() which does shallow cloning.
Q2) What is Shallow copy?
Ans) In shallow copy the object is copied without its contained objects.
Shallow clone only copies the top level structure of the object not the lower levels.
It is an exact bit copy of all the attributes.      
Original
Figure 1: Original java object obj
The shallow copy is done for obj and new object obj1 is created but contained objects of obj are not copied.
Shallow Copy
Figure 2: Shallow copy object obj1
It can be seen that no new objects are created for obj1 and it is referring to the same old contained objects. If either of the containedObj contain any other object no new reference is created
Q3) What is deep copy and how it can be acheived?
Ans) In deep copy the object is copied along with the objects it refers to. Deep clone copies all the levels of the object from top to the bottom recursively.
Original
Figure 3 : Original Object obj
When a deep copy of the object is done new references are created.
Deep Copy
Figure 4: obj2 is deep copy of obj1
One solution is to simply implement your own custom method (e.g., deepCopy()) that returns a deep copy of an instance of one of your classes. This may be the best solution if you need a complex mixture of deep and shallow copies for different fields, but has a few significant drawbacks:
  • You must be able to modify the class (i.e., have the source code) or implement a subclass. If you have a third-party class for which you do not have the source and which is marked final, you are out of luck.
  • You must be able to access all of the fields of the class’s superclasses. If significant parts of the object’s state are contained in private fields of a superclass, you will not be able to access them.
  • You must have a way to make copies of instances of all of the other kinds of objects that the object references. This is particularly problematic if the exact classes of referenced objects cannot be known until runtime.
  • Custom deep copy methods are tedious to implement, easy to get wrong, and difficult to maintain. The method must be revisited any time a change is made to the class or to any of its superclasses.
Other common solution to the deep copy problem is to use Java Object Serialization (JOS). The idea is simple: Write the object to an array using JOS’s ObjectOutputStream and then use ObjectInputStream to reconsistute a copy of the object. The result will be a completely distinct object, with completely distinct referenced objects. JOS takes care of all of the details: superclass fields, following object graphs, and handling repeated references to the same object within the graph.
  • It will only work when the object being copied, as well as all of the other objects references directly or indirectly by the object, are serializable. (In other words, they must implement java.io.Serializable.) Fortunately it is often sufficient to simply declare that a given class implements java.io.Serializable and let Java’s default serialization mechanisms do their thing. Java Object Serialization is slow, and using it to make a deep copy requires both serializing and deserializing.
There are ways to speed it up (e.g., by pre-computing serial version ids and defining custom readObject() and writeObject() methods), but this will usually be the primary bottleneck. The byte array stream implementations included in the java.io package are designed to be general enough to perform reasonable well for data of different sizes and to be safe to use in a multi-threaded environment. These characteristics, however, slow down ByteArrayOutputStream and (to a lesser extent) ByteArrayInputStream .
Q4) What is difference between deep and shallow cloning?
Ans) The differences are as follows:
  • Consider the class:
public class MyData{
String id;
Map myData;
}
The shallow copying of this object will have new id object and values as “” but will point to the myData of the original object. So a change in myData by either original or cloned object will be reflected in other also. But in deep copying there will be new id object and also new myData object and independent of original object but with same values.
  • Shallow copying is default cloning in Java which can be achieved using clone() method of Object class. For deep copying some extra logic need to be provided.
Q5) What are the characteristics of a shallow clone?
Ans) If we do a = clone(b)
1) Then b.equals(a)
2) No method of a can modify the value of b.
Q6) What are the disadvantages of deep cloning?
Ans) Disadvantages of using Serialization to achieve deep cloning –
  • Serialization is more expensive than using object.clone().
  • Not all objects are serializable.
  • Serialization is not simple to implement for deep cloned object..

Sunday, 4 December 2011

Simple AJAX program with struts 1.2

Files required :

1. ajax.js
2. search.jsp
3. web.xml
4. struts-config.xml
5. SearchForm.java
6. SearchAction.java

Code for running the program :


1. ajax.js



var request;

function createObject() {
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
//alert("other than IE");
request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
//alert("IE only");
request = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function search() {
createObject();
var name=window.document.getElementById("n").value;
var url="search.do?name="+name;
request.open('GET',url,true);
request.send(url);
request.onreadystatechange= callback();
}
function callback() {
if (request.readyState == 4) {
displayInfo(request.responseText);
}
}
function displayInfo(str) {
/*This function is only for testing, not working*/
}

2. search.jsp



<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="java.util.*" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Search Page</title>
<script type="text/javascript" src="ajax.js">
</script>
</head>
<body>
<table>
<form action="search.do">
<tr>
<td>Enter name Here : </td>
<td><input id="n" type="test" name="name" onkeyup="search()"/></td>
</tr>
<div id="results"></div>
</form>
</table>
</body>
</html>


3. web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name />
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>search.jsp</welcome-file>
  </welcome-file-list>
  
</web-app>



4. struts-config.xml



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">


<struts-config>
<form-beans>
<form-bean name="searchForm" type="com.search.SerachForm"></form-bean>
</form-beans>
  <action-mappings>
  <action path="/search" name="searchForm" type="com.search.SearchAction">
  <forward name="success" path="/search.jsp"></forward>
  </action>
  </action-mappings>
</struts-config>


5. SearchForm.java



package com.search;


import org.apache.struts.action.ActionForm;


public class SerachForm extends ActionForm {
private String name;


public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


6. SearchAction.java



package com.search;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


public class SearchAction extends Action{
/*
* author : Chandrasekhara Kota
* Date   : 03-Dec-2011
* Email  : chandunaidu.kota@gmail.com
* */

public ActionForward execute(ActionMapping am, ActionForm af, HttpServletRequest req, HttpServletResponse res)throws Exception
{
System.out.println("---------------inside the action------------------"+req.getParameter("name"));

return am.findForward("success");
}
}




Simple AJAX Program

Simple AJAX application using java script and JSP.


Files required.

1. ajax.js
2. mainpage.jsp
3. process.jsp
4. web.xml

Code :


1. ajax.js



var xmlHttp;
function postRequest(url) {


if (window.XMLHttpRequest) { // Mozilla, Safari, ...
//alert("other than IE");
 xmlHttp = new XMLHttpRequest();


} else if (window.ActiveXObject) { // IE
//alert("IE only");
 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");


}


xmlHttp.open('POST', url, true);
xmlHttp.onreadystatechange = function() {

if (xmlHttp.readyState == 4) {
updatepage(xmlHttp.responseText);


}


}


xmlHttp.send(url);


}




function updatepage(str){


document.getElementById("result").innerHTML = "<font color='green' size='15'>" + str + "</font>";


}


function showCurrentTime(){


var url="process.jsp";
postRequest(url);


}


2. mainpage.jsp



<%@ page import="java.util.*" %>
<html>
<head>


<title>Ajax Example</title>
<script type="text/javascript" src="ajax.js"> </script>
</head>


<body>


<h1 align="center"><font color="#000080">Ajax Example</font></h1>
<%
out.println(new Date());
%>
<p><font color="#000080">&nbsp;This very simple Ajax Example retrieves the
current date and time from server and shows on the form. To view the current
date and time click on the following button.</font></p>


<form name="f1">


<p align="center"><font color="#000080">&nbsp;<input value=" Show Time " 
type="button" onclick='JavaScript:showCurrentTime()' name="showdate"></font></p>
<div id="result" align="center"></div>


</form>
<div id=result></div>
</body>


</html>




3. process.jsp



<%@ page import="java.util.*" %>
<%
out.println(new Date());
%>


4. web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>AjaxApp1</display-name>
  
  <welcome-file-list>
      <welcome-file>mainpage.jsp</welcome-file>
    
  </welcome-file-list>
</web-app>

Related Posts Plugin for WordPress, Blogger...