问题
In Spring MVC, I can do this to get a value of items on the query string:
public void sendMessage(HttpServletResponse response,
@RequestParam("Session Id") String sessionId,
But how to I get the complete querystring as one long string? I.e. I don't want individual parameters from it, I want the whole thing?
Many thanks!
回答1:
Add the HttpServletRequest
as argument to the method, and get the query string from the request:
public void sendMessage(HttpServletRequest request,
HttpServletResponse response {
String queryString = request.getQueryString();
}
回答2:
Something like this you need to do:
public void sendMessage(HttpServletResponse response,
@RequestParam("Session Id") String sessionId, HttpServletRequest request,..
{
String qString= request.getQueryString();
回答3:
If you don't want to use HttpServletRequest in your controller, you can create HandlerMethodArgumentResolver that resolves 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) {
...
}
}
回答4:
The Controller itself knows the contents of the entire query string.
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception
You can then get the full query string from:
request.getQueryString();
来源:https://stackoverflow.com/questions/9281067/how-to-request-complete-query-string-in-spring-mvc