Java 如何处理包含正向斜杠的请求?
我的URL请求是Java 如何处理包含正向斜杠的请求?,java,spring,model-view-controller,Java,Spring,Model View Controller,我的URL请求是http://localhost:8080/login/verify/212,32,/cntv5tag07rmy791wbme7xa8x,/SSNZclzqhhH7v6uHIkUsIcPusKo= 我需要得到以下部分:**212,32,/cntv5tag07rmy791wbme7xa8x,/SSNZclzqhhH7v6uHIkUsIcPusKo=** 以下代码不起作用: @RequestMapping(value = "/login/verify/{request:.+}", m
http://localhost:8080/login/verify/212,32,/cntv5tag07rmy791wbme7xa8x,/SSNZclzqhhH7v6uHIkUsIcPusKo=
我需要得到以下部分:**212,32,/cntv5tag07rmy791wbme7xa8x,/SSNZclzqhhH7v6uHIkUsIcPusKo=**
以下代码不起作用:
@RequestMapping(value = "/login/verify/{request:.+}", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public ResponseEntity verifyLogin(@PathVariable(value = "request") String request)
throws InvalidSignatureException
{
}
错误:HTTP状态404
Spring无法处理此请求 试试这个URL:
http://localhost:8080/login/verify?req=212,32,/cntv5tag07rmy791wbme7xa8x,/SSNZclzqhhH7v6uHIkUsIcPusKo=
然后像这样处理:
@RequestMapping("/login/verify")
public String test(@RequestParam("req") String data) {
//'data' will contains '212,32,/cntv5tag07rmy791wbme7xa8x,/SSNZclzqhhH7v6uHIkUsIcPusKo='
String params[] = data.split(",");
}
url中有正向斜杠,这些字符串将被视为路径变量。如果可能只有3个路径变量,请尝试以下代码。请看一看和
}要将uri与斜杠匹配,请使用双精度*
@RequestMapping(value = "/login/verify/**",
然后,在主体中获取值,您将使用
String str = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE)
示例代码:
@RequestMapping(value = "/login/verify/**", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public ResponseEntity verifyLogin(HttpServletRequest httpServletRequest) throws InvalidSignatureException {
String str = (String) request.getAttribute( HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE)
}
你能写成:()吗?其中,“212”、“32”和“cntv5tag07rmy791wbme7xa8x,/ssnzclzqhh7v6uhikusicpusko=”将是不同的参数。你想这样吗?谢谢你的回答。不,我需要解析整个字符串,它包含4个参数,除以“,”。有时4参数可以包含斜杠(/),我不能,请求不是由我形成的。我不能使用查询参数我知道这个解决方案,但在本例中,我得到了string1=212,string2=32,string3=cntv5tag07rmy791wbme7xa8x,string4=SSNZclzqhhH7v6uHIkUsIcPusKo=。不带斜杠(/)的字符串3和字符串4,我需要在代码中附加条件来处理此问题。在这种情况下,您可以使用@RequestMapping(“/login/verify/**”),使用request.getRequestURI()然后解析它。完全正确!谢谢其中request是HttpServletRequest@RequestMapping(value=“/login/verify/**”,method=RequestMethod.POST,products={”application/json;charset=UTF-8“})公共响应验证登录(HttpServletRequest HttpServletRequest)抛出InvalidSignatureException{String str=(String)request.getAttribute(HandlerMapping.PATH_在处理程序中_映射_属性)}
@RequestMapping(value = "/login/verify/**", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public ResponseEntity verifyLogin(HttpServletRequest httpServletRequest) throws InvalidSignatureException {
String str = (String) request.getAttribute( HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE)
}