Spring MVC and Web Layer
August 14, 2021

M05 Q07 What is @RequestParam used for?

@RequestParam is used to bind web request parameters to controller method parameter.

Because Servlet API combines query parameters and form data into a single parameters map, it is possible to use @RequestParam annotation to map:

  • query parameters
  • form data
  • parts in multipart requests

@RequestParam allows you to specify following parameters:

  • name – the name of request parameter to bind
  • required - whether the parameter is required or not. By default parameter is required and in case of it being absent exception will be thrown. If switched to false, in case of parameter being absent null value will be provided or value pointed out by defaultValue property
  • defaultValue – allows you to specify default value to use in case of absence of optional parameter

@RequestParam annotation also supports Java 8 Optional, so following will be equal:

@RequestParam also supports additional use cases, like:

  • Mapping all request parameters to Map
  • Mapping all values to List