[英]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會從
但在這種情況下,您正在生成餅圖圖像,您將配置 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.