SpringMVC的Controller如何重定向非Controller映射地址(外部地址)

[b]引言[/b]
  问题的引出,做微信开发,使用SpringMVC内置的文件下载方法,怎么也无法下载文件,总是提示“文件无法下载”。没有办法,只好在服务端生成文件,然后直接重定向到该文件。虽然不好、不安全,但解决了微信中无法下载文件的问题。

[b]方法[/b]
  代码很简单,就是一个简单的要了解的知识点。RedirectView类。

@RequestMapping("/download")
public ModelAndView download(){
String shortName = "下载文件.xls";
try {
shortName = URLEncoder.encode(shortName,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String url = "../downloadPath/"+shortName;
ModelAndView downloadView = new ModelAndView(new RedirectView(url));
return downloadView;
}


  如果重定向的文件名中有中文,需要使用URLEncoder.encode()函数进行编码,不然会提示无法找到文件。
  RedirectView有个参数:encodingScheme,似乎可以达到同样的效果(我没有试验,大致看了一下源码,觉得似乎可以)。可以使用set方法设置一下,就不用自己转码了。

你可能感兴趣的:(JAVA,WEB开发)