如何在spring filter或java中获取路径变量

ifsvaxew  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(367)

我想去 {testId : 111} 从…起 /v1/testId/111 示例url。
我知道如果使用 request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE) 方法。
但是,过滤器是在servlet之前执行的。
所以,, request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE) 方法不可用(参考:如何在spring筛选器中获取路径变量?)
有没有办法在筛选器中检索路径变量?
或者,有没有任何方法可以在没有 request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE) 方法?
一串 /v1/testId/111 实际上是可用的,我打算从中提取111。

t0ybt7op

t0ybt7op1#

您正在寻找lastindexof,一种 String .

String foo = "/v1/testId/111";
String theValue = foo.substring(foo.lastIndexOf("/") + 1);
``` `lastIndexOf` 返回本例中最后一个斜杠的数字位置,并获取 `substring` 从下一个数字位置将有效地返回上一个斜杠之后的所有内容。
编辑
如果您有更多示例,例如 `/v1/testId/111/userId/222` ,那么你可以 `split` 你的 `String` 喜欢

String string = "/v1/testId/111/userId/222";
String[] parts = string.split("/");
for (int index = 0; index < parts.length; index++) {
if (isNumeric(parts(index))) {
//Do something with these values as you please
String entityName = parts[index - 1];
String entityValue = parts[index];
}
}
``` isNumeric 其实施方式如下:

public static boolean isNumeric(String strNum) {
    if ((strNum == null) || (strNum.equals(""))) {
        return false;
    }
    try {
        double d = Double.parseDouble(strNum);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

礼貌地https://www.baeldung.com/java-check-string-number

相关问题