1. In an annotation-based Spring MVC controller, which of the following are valid ways to set cache headers for a specific path?
Answers:
• Ensuring the instance of
"AnnotationMethodHandlerAdapter" does not have the
"cacheSeconds" property set, and adding an instance of
"WebContentInterceptor".
• Adding "final HttpServletResponse response" as a
parameter, then setting the header "Cache-Control" to
"all-cache".
• Using a Handler Interceptor and using the
"postHandle" method provided by it.
• Cache headers
cannot be set for a specific path.
2. Which of the following code samples will get
the ServletContext inside an Interceptor?
Answers:
• @Autowired
ServletContext context;
•
request.getSession().getServletContext();
•
setServletContext(ServletContext context) { this.context = context; }
•
request.getSession().getServletContext();
3. Which of the following are valid sets of
constructor arguments for the ModelAndView class? (Select all correct answers.)
Answers:
• String
viewName
• String
viewName, Map<String,?> model
• String modelName,
Map<String,?> model
• View view,
Map<String,?> model, Object modelObject
4. Which of the following are possible
validation methods for user input in Spring MVC?
Answers:
• XPath validation
•
Annotation validation
•
Programmatic validation
• Mixed annotation and
programmatic validation
5. Which of the following dependency injection
(DI) methodologies are available in Spring MVC?
Answers:
•
Constructor-based dependency injection
•
Setter-based dependency injection
• Prototype-based
dependency injection
• Manual dependency
injection
6. Which of the following interfaces can be
implemented to interact with a container's management of the bean lifecycle?
Answers:
•
InitializingBean
• IntializeableBean
•
DisposableBean
• DisposingBean
7. Select all authentication methods that are
supported by Spring Security by default:
Answers:
• Basic
Authentication
• Digest
Access Authentication
• Remember-me
Authentication
• Multi-factor
authentication
8. Which of the following statements is false?
Answers:
• Spring MVC provides
both declarative and programmatic transaction management.
• The
transaction-manager attribute in the transactional advice (<tx:advice/>)
is required if the bean name of the PlatformTransactionManager that is being
wired is transactionManager.
• By
default, a transaction is only marked for rollback in the case of runtime
unchecked exceptions.
• None of these.
9. Which of the following statements is true
about the HandlerExceptionResolver class?
Answers:
• Any Spring bean that
implements HandlerExceptionResolver will be used to intercept and process any
exception raised that was handled by a Controller.
• @ExceptionHandler
methods can be injected with the model.
•
DefaultHandlerExceptionResolver converts standard Spring exceptions and
converts them to HTTP Status Codes.
• None of these.
10. Which of the following statements is true about method arguments
that have an @ModelAttribute annotation?
Answers:
• It indicates that the
argument should be retrieved from the model.
• If the argument is not
present in the model, it should be added to the model first, and then
instantiated.
• If the argument is not
present in the model, it should be instantiated first, and then added to the
model.
• Model
attributes have to be explicitly added when using @ModelAttribute.
11. Given the following method:
@RequestMapping(method=RequestMethod.GET,
value="/fooBar")
public
ResponseEntity<String> fooBar2() {
String json = "jsonResponse";
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentType(MediaType.APPLICATION_JSON);
return new ResponseEntity<String>(json, responseHeaders,
HttpStatus.CREATED);
}
Which of the following statements is correct?
Answers:
• It allows access to
request and response headers.
• It doesn't allow
access to request and response headers.
• It returns a JSON
String and sets the mimetype to text/plain.
• It
returns a JSON String and sets the mimetype to text/javascript.
12. Which of the following classes provides
built-in pagination functionality in SpringMVC?
Answers:
• PageListSorter
• PageListContext
•
PagedListHolder
• Spring MVC doesn't
include a built-in class for handling pagination.
13. Given the method below:
@RequestMapping(value = "/foo", method
= RequestMethod.GET)
public final String foo(HttpServletRequest
request, BindingResult bindResult, ModelMap model) {
model.addAttribute("abc", 123);
return
"foo";
}
When the view is displayed in the browser, it's
URL is "http://mydomain/foo?abc=123".
Which of the following statements is true?
Answers:
• The attribute appears
as string name-value pairs in the URL because the @ModelAttribute annotation is
used in the controller.
• Adding
"model.asMap().clear();" will prevent the attribute name-value pair
from appearing in the URL.
• The
attribute name-value pair will be included in the URL, regardless of the use of
@ModelAttribute in the controller.
• The attribute
name-value pair cannot be excluded from being displayed in the URL.
14. Which of the following is true about the use
of <context:annotation-config /> in a servlet?
Answers:
•
<context:annotation-config> activates many different annotations in
beans, whether they are defined in XML or through component scanning.
•
<context:annotation-config> declares explicit support for
annotation-driven MVC controllers.
•
<context:annotation-config> adds support for declarative validation via
@Valid.
• All statements are
false.
15. Fill in the blank:
The _______ enables the use of the bean
element’s attributes, instead of nested <property/> elements, to describe
property values and/or collaborating beans.
Answers:
• default namespace
• c-namespace
•
p-namespace
• namespace
16. Which of the following statements is true
about the @RequestMapping annotation?
Answers:
• It has a single String
parameter.
• It has a String[]
paramater.
• It
supports ant-style paths.
• It doesn't support
wildcard input.
17. Which of the following statements is true
for the configuration of the Spring handler adapter(s) in a Spring MVC
application context?
Answers:
• Spring MVC defines 2
different request handler adapters by default: HttpRequestHandlerAdapter and
SimpleControllerHandlerAdapter.
• Request handler
adapters need to be defined in the context files.
• If at
least one request handler adapter is defined the context files, Spring will not
create the default adapters.
• Using
<mvc:annotation-driven /> causes the context to define both
AnnotationMethodHandlerAdapter and SimpleControllerHandlerAdapter.
18. What does the following code do?
@RequestMapping("/{id}/**")
public void foo(@PathVariable("id")
int id, HttpServletRequest request) {
String
restOfTheUrl = (String) request.getAttribute(
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
...
}
Answers:
• It retrieves the
complete path value after the @RequestMapping and @PathVariable values have
been parsed.
• It retrieves the
complete path value before the @RequestMapping and @PathVariable values have
been parsed.
• It retrieves the
partial path value (after "**") after the @RequestMapping and
@PathVariable values have been parsed.
• It
retrieves the partial path value (after "**") before the
@RequestMapping and @PathVariable values have been parsed.
19. Which of the following statements is true
about the HandlerInterceptor interface?
Answers:
• It gets called after
the appropriate HandlerAdapter triggers the execution of the handler itself.
• It
allows exchanging the request and response objects that are handed down the
execution chain.
• It gets configured in
the application context.
• It is well-suited for
request content and view content handling, such as multipart forms and GZIP
compression.
20. How can an HTTP 404 status code be returned
from a Spring MVC Controller?
Answers:
• Throwing a ResourceNotFoundException
declared with the @ResponseStatus annotation.
• Throwing an
HttpRequestMethodNotSupportedException.
• Configuring
<context:annotation-config> in the Spring configuration XML document to
send a 404 status for a controller via its "returnCode" argument.
• Having
the method accept HttpServletResponse as a parameter, so that setStatus(404)
can be called on it.
21. Which of the following is the default bean
scope in Spring MVC?
Answers:
• global session
• local session
• prototype
•
singleton
22. True or false: a factory class can hold more
than one factory method.
Answers:
• True
• False
23. Which of the following enables custom
qualifier annotation types to be registered even if they are not annotated with
Spring’s @Qualifier annotation?
Answers:
• CustomQualifier
•
CustomAutowireConfigurer
• CustomQualifierType
• CustomAutowire
24. Which of the following statements is
correct?
Answers:
• Explicitly declared
handler mappings or declaring <mvc:annotation-driven> are optional when
using <mvc:resources>.
• <mvc:resources>
declares BeanNameUrlHandlerMapping by default.
•
<mvc:resources> doesn't declare its own handler mapping.
• <mvc:resources>
declares only DefaultAnnotationHandlerMapping by default.
25. Which of the following can be used to serve
static resources while still using DispatchServlet at the site's root?
Answers:
•
<mvc:default-resources/>
•
<mvc:resources/>
•
<mvc:default-servlet-handler/>
•
<mvc:view-controller/>
26. Which of the following statements is true
about the @RequestParam annotation?
Answers:
• Providing a
"defaultValue" optional element sets the "required"
optional element to true.
• It
indicates that a method parameter should be bound to a web request parameter.
• It is unsupported for
annotated handler methods in Servlet and Portlet environments.
• None of these.
27. What is the difference between the
@Repository and the @Controller annotations in Spring?
Answers:
•
"@Repository" is used as a stereotype for the persistence layer,
while "@Controller" is used as a stereotype for the presentation
layer.
•
"@Repository" is used as a stereotype for the presentation layer,
while "@Controller" is used as a stereotype for the persistence
layer.
•
"@Repository" is used as a stereotype for the service layer, while
"@Controller" is used as a generic stereotype for any Spring-managed
component.
•
"@Controller" is used as a stereotype for the service layer, while
"@Repository" is used as a generic stereotype for any Spring-managed
component.
28. Which of the following code samples will
correctly return an image in @ResponseBody from a byte[] of image data?
Answers:
•
@RequestMapping("/photo") public ResponseEntity<byte[]> testphoto()
throws IOException { InputStream in =
servletContext.getResourceAsStream("/images/no_image.jpg"); final
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG); return new
ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers,
HttpStatus.CREATED); }
•
@ResponseBody @RequestMapping("/photo", method = RequestMethod.GET,
produces = MediaType.IMAGE_JPEG_VALUE) public byte[] testphoto() throws
IOException { InputStream in =
servletContext.getResourceAsStream("/images/no_image.jpg"); return
IOUtils.toByteArray(in); }
•
@RequestMapping("/photo") public void photo(HttpServletResponse
response) throws IOException { response.setContentType("image/jpeg");
InputStream in =
servletContext.getResourceAsStream("/images/no_image.jpg"); IOUtils.copy(in,
response.getOutputStream()); }
• @ResponseBody
@RequestMapping("/photo2) public byte[] testphoto() throws IOException {
InputStream in =
servletContext.getResourceAsStream("/images/no_image.jpg"); return
IOUtils.toByteArray(in); }
29. Which of the following statements are
correct, with respect to using the @PreAuthorize annotation in Spring
controller methods?
Answers:
• @PreAuthorize does not
work with Spring controller methods.
•
@PreAuthorize works with Spring controller methods.
• The "pre-post-annotations"
expression should be set to "disabled" in the servlet.xml file.
• Using CGLIB proxies
are optional when using @PreAuthorize in Spring controller methods.
30. Which of the following is not a built-in
Spring MVC bean scope?
Answers:
• singleton
• request
• global session
• local
session
31. Which of the following annotations are
supported by classes with the @Bean annotation?
Answers:
•
@PostConstruct
• @PreDestroy
• @PreConstruct
• @PostDestroy
32. Fill in the blank: _______ is a class-level
annotation indicating that an object is a source of bean definitions.
Answers:
•
@Configuration
• @Definition
• @Bean
• @Scope
33. Regarding the @Resource annotation, which of
the following statements is false?
Answers:
• It is part of the
JSR-250 specification.
• By default, Spring
interprets its name attribute as the bean name to be injected.
• If no
name attribute is specified, the default name is derived from the field name or
setter method.
• It supports injection
on bean property setter methods only.
34. Fill in the blank:
When defining a bean that is created with a
static factory method, the ______ attribute is used to specify the class
containing the static factory method.
Answers:
• class
• class-name
• factory-class
• factory-method
35. Which of the following statements is true
about the @ModelAttribute annotation?
Answers:
• It binds a method
parameter or method return value to an anonymous model attribute.
• It can
be used to expose reference data to a web view.
• It is not supported
for controller classes with @RequestMapping methods.
• It cannot be used to
expose command objects to a web view.
36. Fill in the blank:
In Spring's XML-based configuration, the _______
attribute of the <property/> element specifies a property or constructor
argument as a string representation.
Answers:
• namespace
• name
• class
• value
37. Which of the following statements is/are
true about autowiring in Spring?
Answers:
• Multiple constructors
a given class may carry the @AutoWired annotation.
• Only one constructor
of any given class may carry the @AutoWired annotation.
• Fields are injected
before the construction of a bean.
• Fields
are injected after the construction of a bean.
38. Regarding dependency resolution, which of the following statements is false?
Answers:
• The ApplicationContext
is created and initialized with configuration metadata that describes all the
beans.
• Configuration metadata
can only be specified via XML or annotations.
• Each property or
constructor argument is an actual definition of the value to set, or a
reference to another bean in the container.
• For each bean, its
dependencies are expressed in the form of properties, constructor arguments, or
arguments to the static-factory method.
No comments:
Post a Comment