struts.action.excludePattern 不工作
struts.action.excludePattern not working
我想在 URL 中排除特定字符串。我已经使用在线 reg 测试器测试了正则表达式并且它有效。
但是,当我访问 URL 时,似乎 struts2 仍在处理请求。
我的排除设置有误吗?
<constant name="struts.action.excludePattern" value="\/mystring$"/>
我从 struts2 框架中提取了以下代码并创建了我自己的测试 class 来测试正则表达式。
public static List<Pattern> buildExcludedPatternsList(String patterns) {
if ((null != patterns) && (patterns.trim().length() != 0)) {
List<Pattern> list = new ArrayList();
String[] tokens = patterns.split(",");
for (String token : tokens) {
System.out.println("Token=" + token);
list.add(Pattern.compile(token.trim()));
}
return Collections.unmodifiableList(list);
}
return null;
}
public static boolean isUrlExcluded(String uri, List<Pattern> excludedPatterns) {
if (excludedPatterns != null) {
for (Pattern pattern : excludedPatterns) {
if (pattern.matcher(uri).matches()) {
return true;
}
}
}
return false;
}
错误。模式应该是
<constant name="struts.action.excludePattern" value=".*/mystring$"/>
此模式已编译并与 URI 匹配。代码
String uri = RequestUtils.getUri(request);
for ( Pattern pattern : excludedPatterns ) {
if (pattern.matcher(uri).matches()) {
return true;
}
}
return false;
因为它匹配整个 URI 字符串,所以您应该在开始时让您的模式变得贪婪。
我想在 URL 中排除特定字符串。我已经使用在线 reg 测试器测试了正则表达式并且它有效。
但是,当我访问 URL 时,似乎 struts2 仍在处理请求。
我的排除设置有误吗?
<constant name="struts.action.excludePattern" value="\/mystring$"/>
我从 struts2 框架中提取了以下代码并创建了我自己的测试 class 来测试正则表达式。
public static List<Pattern> buildExcludedPatternsList(String patterns) {
if ((null != patterns) && (patterns.trim().length() != 0)) {
List<Pattern> list = new ArrayList();
String[] tokens = patterns.split(",");
for (String token : tokens) {
System.out.println("Token=" + token);
list.add(Pattern.compile(token.trim()));
}
return Collections.unmodifiableList(list);
}
return null;
}
public static boolean isUrlExcluded(String uri, List<Pattern> excludedPatterns) {
if (excludedPatterns != null) {
for (Pattern pattern : excludedPatterns) {
if (pattern.matcher(uri).matches()) {
return true;
}
}
}
return false;
}
错误。模式应该是
<constant name="struts.action.excludePattern" value=".*/mystring$"/>
此模式已编译并与 URI 匹配。代码
String uri = RequestUtils.getUri(request); for ( Pattern pattern : excludedPatterns ) { if (pattern.matcher(uri).matches()) { return true; } } return false;
因为它匹配整个 URI 字符串,所以您应该在开始时让您的模式变得贪婪。