【问题标题】:Unexpected GET values with different URLs具有不同 URL 的意外 GET 值
【发布时间】:2015-04-01 09:12:35
【问题描述】:

这个想法是将 SMB 文件 URL 或普通网站 URL 作为 GET 参数传递给 Spring Web MVC 控制器。但是,正确的输出存在一些问题:

获取值:

如您所见,第二个和第四个 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


【解决方案1】:

改变请求映射如下:

@RequestMapping(value="/document/test/{url:.+}", method = RequestMethod.GET)

第 4 个 URL 不起作用,因为您需要对 % 进行编码。请在编码后的 URL 下方找到:

http://localhost:8080/gradle-spring-mvc-web-project/document/test/%255C%255Csmbserver%255Caccounts%255Ctestaccount%255CWas_muessen_Programme_verarbeiten.docx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2013-11-15
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    相关资源
    最近更新 更多