2

我有一个 Java 项目(Spring)。我需要从文件夹“图像”中获取图像列表并随机选择其中一个。我从我的war文件中的这个目录获取文件列表时遇到问题。我可以使用什么课程?以及如何设置文件夹的路径?感谢您的帮助帮助!

PS我使用的服务(不是控制器)应该从我的图像文件夹中给我一个随机图像的名称?看起来像:

<body style="background: url(request.getContextPath() + RandomBackgroundService.getRandomBackground()) ...

我的服务看起来如何?

4

3 回答 3

3

您可以从ServletContext.getResourcePaths()获取列表- 只需将引用自动连接到您的控制器并要求正确的文件夹 -

@Controller
@RequestMapping("/whatever")
public class MyClass {

    @Autowired
    private final ServletContext context;

    @RequestMapping(method = RequestMethod.GET)
    public String get(ModelMap model) {
        Random rand = new Random();
        List<String> images = new ArrayList<String>(context.getResourcePaths("/images"));
        model.addAttribute("randomImage", images.get(rand.nextInt(images.size())));
        return "myPage";
    }

}
于 2013-11-01T20:02:24.603 回答
0

如果您尝试从类访问图像目录,则应该可以:

File imagesFolder = MyClass.getResource("images").getFile();
for (File image : imagesFolder.listFiles()) {
    // TODO: Figure out your random logic.
}

Class.getResource()在确定如何访问应用程序中的资源时,阅读 上的文档也可以帮助您。

于 2013-11-01T19:54:04.293 回答
0

首先,忽略“目标”目录。它只是 maven 放置其处理结果的地方。

如果您需要在运行时从 WAR 文件目录中检索数据,我会使用类似:

for (String s : req.getServletContext().getResourcePaths("images")) {
    InputStream resource = req.getServletContext.getResourceAsStream(s);
    // do something with resource
}
于 2013-11-01T19:49:45.563 回答