我们有一个要求,我们只想在查询字符串中允许特定的键值对
示例
google.com/?a=b&c=d
应该没问题(我们希望& c被允许作为查询字符串键的一部分)
但
google.com/?w=x&y=z
应该抛出一个错误,因为如果a或c以外的任何东西作为查询字符串键的一部分传递,我们想抛出一个错误
任何想法如何做到这一点?
答案 0 :(得分:0)
ServletRequest getParameterNames()或getParameterMap()会为您提供传入的所有参数。所以这样的事情会起作用:
List<String> whiteListedParameters = Arrays.asList("a", "b");
@RequestMapping(value = "google.com", method = RequestMethod.GET)
public ModelAndView render(HttpServletRequest request) throws Exception {
Enumeration<String> parameterNames = request.getParameterNames();
while(parameterNames.hasMoreElements()) {
String parameterName = parameterNames.nextElement();
if(!whiteListedParameters.contains(parameterName)) {
throw new Exception("Whatever you want");
}
}
...
}