提交 46097726 编写于 作者: A Arjen Poutsma

Added extractFullFilenameFromUrlPath to WebUtils

上级 b0180fdf
......@@ -653,6 +653,20 @@ public abstract class WebUtils {
* @return the extracted URI filename (e.g. "index")
*/
public static String extractFilenameFromUrlPath(String urlPath) {
String filename = extractFullFilenameFromUrlPath(urlPath);
int dotIndex = filename.lastIndexOf('.');
if (dotIndex != -1) {
filename = filename.substring(0, dotIndex);
}
return filename;
}
/**
* Extract the full URL filename (including file extension) from the given request URL path.
* Correctly resolves nested paths such as "/products/view.html" as well.
* @param urlPath the request URL path (e.g. "/products/index.html")
* @return the extracted URI filename (e.g. "index.html")
*/
public static String extractFullFilenameFromUrlPath(String urlPath) {
int end = urlPath.indexOf(';');
if (end == -1) {
end = urlPath.indexOf('?');
......@@ -661,12 +675,7 @@ public abstract class WebUtils {
}
}
int begin = urlPath.lastIndexOf('/', end) + 1;
String filename = urlPath.substring(begin, end);
int dotIndex = filename.lastIndexOf('.');
if (dotIndex != -1) {
filename = filename.substring(0, dotIndex);
}
return filename;
return urlPath.substring(begin, end);
}
}
......@@ -19,14 +19,18 @@ package org.springframework.web.util;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import org.junit.Test;
/**
* @author Juergen Hoeller
* @author Arjen Poutsma
*/
public class WebUtilsTests extends TestCase {
public class WebUtilsTests {
public void testFindParameterValue() {
@Test
public void findParameterValue() {
Map<String, Object> params = new HashMap<String, Object>();
params.put("myKey1", "myValue1");
params.put("myKey2_myValue2", "xxx");
......@@ -40,7 +44,8 @@ public class WebUtilsTests extends TestCase {
assertEquals("myValue4", WebUtils.findParameterValue(params, "myKey4"));
}
public void testExtractFilenameFromUrlPath() {
@Test
public void extractFilenameFromUrlPath() {
assertEquals("index", WebUtils.extractFilenameFromUrlPath("index.html"));
assertEquals("index", WebUtils.extractFilenameFromUrlPath("/index.html"));
assertEquals("view", WebUtils.extractFilenameFromUrlPath("/products/view.html"));
......@@ -49,4 +54,14 @@ public class WebUtilsTests extends TestCase {
assertEquals("view", WebUtils.extractFilenameFromUrlPath("/products/view.html?param=/path/a.do"));
}
@Test
public void extractFullFilenameFromUrlPath() {
assertEquals("index.html", WebUtils.extractFullFilenameFromUrlPath("index.html"));
assertEquals("index.html", WebUtils.extractFullFilenameFromUrlPath("/index.html"));
assertEquals("view.html", WebUtils.extractFullFilenameFromUrlPath("/products/view.html"));
assertEquals("view.html", WebUtils.extractFullFilenameFromUrlPath("/products/view.html?param=a"));
assertEquals("view.html", WebUtils.extractFullFilenameFromUrlPath("/products/view.html?param=/path/a"));
assertEquals("view.html", WebUtils.extractFullFilenameFromUrlPath("/products/view.html?param=/path/a.do"));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册