在Spring MVC中,我能做到這一點來獲得項目的查詢字符串的值:如何在Spring MVC中請求完整的查詢字符串?
public void sendMessage(HttpServletResponse response,
@RequestParam("Session Id") String sessionId,
但如何我得到完整的查詢字符串作爲一個長字符串?即我不想從它的個人參數,我想要整個事情?
非常感謝!
在Spring MVC中,我能做到這一點來獲得項目的查詢字符串的值:如何在Spring MVC中請求完整的查詢字符串?
public void sendMessage(HttpServletResponse response,
@RequestParam("Session Id") String sessionId,
但如何我得到完整的查詢字符串作爲一個長字符串?即我不想從它的個人參數,我想要整個事情?
非常感謝!
作爲參數添加HttpServletRequest
的方法,並從該請求的查詢字符串:
public void sendMessage(HttpServletRequest request,
HttpServletResponse response {
String queryString = request.getQueryString();
}
像這樣的事情,你需要做的:
public void sendMessage(HttpServletResponse response,
@RequestParam("Session Id") String sessionId, HttpServletRequest request,..
{
String qString= request.getQueryString();
控制器本身知道的內容整個查詢字符串。
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception
然後,可以得到完整的查詢字符串:
request.getQueryString();
如果你不想使用HttpServletRequest的在你的控制器,你可以創建HandlerMethodArgumentResolver解析查詢字符串。
例子:
@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) {
...
}
}
這是如此...在春天風格。 – msangel 2013-08-23 09:36:08
詛咒你比我快,但+1得到它吧:) – Paul 2012-02-14 17:10:58
哈哈!刷新後的第一個,最近也做了其他項目的一部分。所以,快速回答 – kosa 2012-02-14 18:10:08
無賴,你的答案沒有被接受。我注意到有很高代表的人會很快拋出一個答案來獲得早期的時間戳,然後返回並填寫細節。也許這就是獲得大數據的訣竅......雖然我不在乎做這些事情。至少你和我知道你先把代碼放下了:) – Paul 2012-02-14 18:37:22