【发布时间】:2015-04-01 09:12:35
【问题描述】:
这个想法是将 SMB 文件 URL 或普通网站 URL 作为 GET 参数传递给 Spring Web MVC 控制器。但是,正确的输出存在一些问题:
获取值:
- http://localhost:8080/docapp/document/test/42 --> 获取值:42
- http://localhost:8080/docapp/document/test/www.google.com --> 获取值:www.google
- http://localhost:8080/docapp/document/test/www.google.com/ --> 获取值:www.google.com
- http://localhost:8080/docapp/document/test/%5C%5Csmbserver%5Caccounts%5Ctestaccount%5CWas_muessen_Programme_verarbeiten.docx --> 空白页,没有例外
如您所见,第二个和第四个 URL 示例不起作用,所以我的问题是:
- 如何处理第二个示例?正确的输出应该是 www.google.com。
- 在第四个示例中会发生什么?
设置信息:使用 Ubuntu 14.04 LTS x64 和 Tomcat 8
Java
@RequestMapping(value="/document/test/{url}", method=RequestMethod.GET)
public String test(@PathVariable String url, Model model) throws IOException
{
model.addAttribute("url", url);
return "test";
}
HTML
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>Value: ${url}</p>
</body>
</html>
【问题讨论】:
-
而不是 pathVariable。使用请求对象获取 url
-
尝试对 URL 进行两次或三次编码并将其传递给 URL,然后在服务器端完全解码 URL
标签: java spring spring-mvc