spring - 无法在 Web 应用程序(tomcat、Spring MVC)中找到 witten 文件

标签 spring tomcat spring-mvc io jfreechart

我使用 JFreeChart 在我的 Web 应用程序中生成一些报告,我使用 JFreechart 构建图表并将其保存为图像,但我从未在我的 Tomcat 目录中找到该图像。

我尝试打印工作目录,它给了我 Tomcat 根目录,所以我想知道为什么图像从未写入该目录。

这是我的服务方法:

public DefaultPieDataset generateChartEquipementsByDepartementDataset(){
    DefaultPieDataset pieDataset ;
    pieDataset = convertMapToDataset(reportsDao.getEquipementsByDepartementDataset()) ;
    JFreeChart chart = ChartFactory.createPieChart(
            "% Equipements par departement",
            pieDataset,
            true,
            true,
            false
            ) ;
    try{
    ChartUtilities.saveChartAsJPEG(new File("/chart.jpeg"), chart, 400, 400) ;
    }catch(Exception ex){}

    return pieDataset ;
}

当我测试它时,它会在我的应用程序的根目录中写入图像,但不会在 tomcat 中写入图像。 这是 Controller 。

@RequestMapping(value="/reports")
public String reportsHandler( Model model ) {
    reportingService.generateChartEquipementsByDepartementDataset() ;
    String curSession = System.getProperty("user.dir") ;
    model.addAttribute("curSession", curSession) ;
    return "home" ;
}

最佳答案

Root ( / ) 不指向网络应用程序的根路径,您需要使用 ServletContext.getRealPath() 获取“翻译后的路径” , 喜欢

... new File(request.getServletContext().getRealPath("/chart.jpeg")) ....

关于spring - 无法在 Web 应用程序(tomcat、Spring MVC)中找到 witten 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129278/

相关文章:

spring-mvc - 在 Spring Portlet MVC 架构中提供 PDF - Liferay 6.0.6

java - Spring 3.1 命名空间错误组件扫描

java - Liferay 6.2 上 Spring MVC 表单中的 Portlet 命名空间

java - 使用 spring 中方法返回的对象注入(inject)构造函数

java - 依赖项的测试资源不在类路径中?

java - Tomcat Server.xml 中的动态通配符设置(非 www)

java - tomcat请求的资源()不可用

Java servlet 不写入响应字节

java - 为什么 FetchType.Eager 会阻止双向映射中的 org.hibernate.TransientObjectException 而 CascadeType.ALL 却没有效果?

java - Spring Boot 中的 Google 日历 API