How to request complete query string in Spring MVC?

非 Y 不嫁゛ 提交于 2020-01-02 02:17:09

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!