Query parameters are passed after the URL string by appending a question mark followed by the parameter name , then equal to (“=”) sign and then the parameter value. Multiple parameters are separated by “&” symbol.
Difference between @PathVariable and @RequestParam in Spring 1) The @RequestParam is used to extract query parameters while @PathVariable is used to extract data right from the URI.
What is main difference between @RequestParam and @QueryParam in Spring MVC controller? They're functionally the same: they let you bind the value of a named HTTP param to the annotated variable. That being said, the question is very broad, so you'll have to specify more detail if you want a more useful answer.
While the other answers are correct it certainly is not the "Spring way" to use the HttpServletRequest object directly. The answer is actually quite simple and what you would expect if you're familiar with Spring MVC.
@RequestMapping(value = {"/search/", "/search"}, method = RequestMethod.GET)
public String search(
@RequestParam Map<String,String> allRequestParams, ModelMap model) {
return "viewName";
}
Edit
It has been pointed out that there exists (at least as of 3.0) a pure Spring MVC mechanism by which one could get this data. I will not detail it here, as it is the answer of another user. See @AdamGent's answer for details, and don't forget to upvote it.
In the Spring 3.2 documentation this mechanism is mentioned on both the RequestMapping
JavaDoc page and the RequestParam
JavaDoc page, but prior, it is only mentioned in the RequestMapping
page. In 2.5 documentation there is no mention of this mechanism.
This is likely the preferred approach for most developers as it removes (at least this) binding to the HttpServletRequest
object defined by the servlet-api jar.
/Edit
You should have access to the requests query string via request.getQueryString()
.
In addition to getQueryString, the query parameters can also be retrieved from request.getParameterMap() as a Map.
The HttpServletRequest object provides a map of parameters already. See request.getParameterMap() for more details.
Here's a simple example of getting requestParams
in a Map
:
@RequestMapping(value="submitForm.html", method=RequestMethod.POST)
public ModelAndView submitForm(@RequestParam Map<String, String> reqParam) {
String name = reqParam.get("studentName");
String email = reqParam.get("studentEmail");
ModelAndView model = new ModelAndView("AdmissionSuccess");
model.addObject("msg", "Details submitted by you::Name: " + name
+ ", Email: " + email );
}
In this case, it will bind the values:
studentName
with name
studentEmail
with email
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With