簡體   English   中英

無法使用 Intellij 在 Spring Boot 項目中的瀏覽器中加載圖像

[英]Unable to load image in browser in spring boot project using Intellij

我創建了一個 Spring Boot 項目來使用 Jfree 圖表 API。

當我嘗試在瀏覽器中將我的數據庫數據加載為餅圖時,餅圖未加載。

在此處輸入圖像描述

項目結構:

在此處輸入圖像描述

我在模板文件夾下創建了 locationReport.html 來顯示 jpeg 圖像。

位置報告.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Location Report</title>
</head>
<body>
<img src="location.jpeg" alt="Error in location image">
</body>
</html>

控制器:

@Controller
@RequestMapping("/api/v1/")
public class LocationController {
    @RequestMapping(value = "/generateReport")
    public String generateLocationReport() throws IOException {
    locationService.generateLocationReport();
        return "locationReport";
    }
}

位置服務實現:

 @autowired
 private ServletContext servletContext;
    @Override
    public void generateLocationReport() throws IOException {
        String path = servletContext.getRealPath("/");
        List<Object[]> data = locationRepository.findTypeAndTypeCount();
        reportUtil.generatePieChart(path, data);

位置存儲庫

    @Query(value="SELECT loc.type, COUNT(loc) FROM Location loc GROUP BY loc.type")
    List<Object[]> findTypeAndTypeCount();

報告工具:

    @Override
    public void generatePieChart(String path, List<Object[]> data) throws IOException {
        DefaultPieDataset dataset = new DefaultPieDataset();
        for (Object[] object : data) {
            dataset.setValue(object[0].toString(), Double.valueOf(object[1].toString()));
        }

       JFreeChart locationChart = ChartFactory.createPieChart3D("Location Report", dataset);

        ChartUtils.saveChartAsJPEG(new File(path+"/location.jpeg"),locationChart,300,300);
    }

圖像已在根目錄(在 webapp 內)成功創建,但未在瀏覽器中加載。

在此處輸入圖像描述

注意 - 我添加了百里香依賴和其他預期工作的功能

默認情況下, spring會從

  • /META-INF/資源/
  • /資源/
  • /靜止的/
  • /上市/

但在這種情況下,您正在生成餅圖圖像,您將配置 ResourceHandler 以讓您的服務器讀取並提供這些生成的圖像。

@Configuration
@EnableWebMvc
public class Config implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
                .addResourceHandler("/generated-images/**")
                .addResourceLocations("file:generated-images/");
    }
}

當用戶訪問 http://generated-images/image_name.jpeg 時,此示例配置將使您的應用程序從 project_root/generated-images 文件夾中讀取

我在班級級別使用 @RequestMapping("/api/v1/") 。 當我刪除它時,它按預期工作。

@Controller
@RequestMapping("/api/v1/") <--Removed it
public class LocationController {

    @RequestMapping(value = "/generateReport")
    public String generateLocationReport() throws IOException {
    locationService.generateLocationReport();
        return "locationReport";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM