How to request a full query string in Spring MVC?

In Spring MVC, I can do this to get the value of the elements in the query string:

public void sendMessage(HttpServletResponse response, @RequestParam("Session Id") String sessionId, 

But how do I get the complete query string as one long string? That is, I do not need separate parameters, I want all this?

Many thanks!

+8
java spring spring-mvc
source share
4 answers

Add the HttpServletRequest argument to the method and get the query string from the query:

 public void sendMessage(HttpServletRequest request, HttpServletResponse response { String queryString = request.getQueryString(); } 
+10
source share

Something like this you need to do:

  public void sendMessage(HttpServletResponse response, @RequestParam("Session Id") String sessionId, HttpServletRequest request,.. { String qString= request.getQueryString(); 
+3
source share

If you do not want to use the HttpServletRequest in your controller, you can create a HandlerMethodArgumentResolver that resolves the query string.

Example:

 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) public @interface QueryString { } public class QueryStringResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter parameter) { Annotation[] parameterAnnotations = parameter.getParameterAnnotations(); for (Annotation parameterAnnotation : parameterAnnotations) { if (QueryString.class.isInstance(parameterAnnotation)) { return true; } } return false; } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class); return request.getQueryString(); } } <mvc:annotation-driven> <mvc:argument-resolvers> <bean class="mypackage.QueryStringResolver"/> </mvc:argument-resolvers> </mvc:annotation-driven> public class MyController { @RequestMapping(...) public String someMethod(@QueryString String queryString) { ... } } 

+3
source share

The controller itself knows the contents of the entire query string.

 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception 

Then you can get the full query string:

 request.getQueryString(); 
0
source share

All Articles