0

我有一个关于某事是否可能的问题。我有一个 spring mvc webapp,它将有一个链接到返回 Excel 文档的外部网站的按钮。返回的 excel 文档的名称是垃圾,我想在提示用户保存之前重命名该文档。

这可能使用spring mvc吗?我在一个非常旧的版本。与 Java 1.4.2 兼容的版本。

到目前为止,我在想我会扩展 org.springframework.web.servlet.mvc.AbstractController,覆盖 handleRequestInternal,然后做这样的事情......

protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

RedirectUrlBuilder urlBuilder = new RedirectUrlBuilder();
urlBuilder.setServerName(batchServerName);
urlBuilder.setPort(Integer.parseInt(batchServerPort));
urlBuilder.setContextPath(batchReportRoot);
urlBuilder.setServletPath(reportNameServletPath);
urlBuilder.setPathInfo(reportNamePathInfo);
urlBuilder.setScheme(HTTP);

String transitionUrl = urlBuilder.getUrl();
ModelAndView modelAndView = new ModelAndView(new RedirectView(transitionUrl));

return modelAndView;

但是我如何进一步重命名文档,因为它进入等等......

谢谢

4

1 回答 1

1

您可能会考虑的另一种方法是您有一个控制器实现,它将请求代理到外部网站。您的用户不是直接与外部网站交互,而是与您的控制器交互。这将使您有机会在将文件提供给用户之前重命名文件。这也意味着如果将来事情发生变化,您只需要更改 Controller 的实现即可。

因此,建议的工作流程可能是:

  1. 用户点击链接到您的控制器 /downloadExcelReport
  2. 请求由 ExcelReportController 处理
  3. ExcelReportController 向外部网站发出 HTTP 请求并获取 Excel 文档
  4. 在将 Excel 报告返回给您的用户之前,ExcelReportController 会设置正确的 HTTP 标头以确保根据您的需要命名文件。

这样,您只需提供一个普通的 Controller 实现,而不必覆盖 Spring 的内部。

于 2013-08-22T11:37:34.063 回答