java - 在 play 2.0.3 中,我有 'sets' 个图像,我想在启动服务器时对其进行分类并放入数据库中

标签 java database webserver playframework-2.0

我需要一个网站来展示我作为金匠的工作,因为我有“一些”编程经验,所以我想我应该自己做,它只是一个显示我工作的一些图像和基本联系信息的网站。

我想做的基本上是这样的:

我将珠宝的图像/渲染放在这样的文件夹结构中

- public
- - images
- - - creations
- - - - JewelSet1
- - - - - Jewel1
- - - - - - img1
- - - - - - img2
- - - - - - img3
- - - - - Jewel2
- - - - JewelSet2
- - - - - Jewel3
- - javascripts
- - stylesheets

当第一次调用 public static Result index() 方法时,它应该搜索 public/images/creations 并将文件夹分类为我创建的三个对象,即:CreationSet、图像和创作,基本上是:

package models;

import java.awt.image.BufferedImage;
import play.db.ebean.Model;
import play.data.validation.Constraints;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Image extends Model{
    @Id
    public String id;

    @Constraints.Required
    public BufferedImage img = null;

    @Constraints.Required
    public String desc;
}
<小时/>
@Entity
public class Creation extends Model {
    @Id
    public String id;

    @Constraints.Required
    public String name;

    @Constraints.Required
    public String desc;

    public List<Image> images = new ArrayList<Image>();

    public void addImage(int priority, Image img){
        images.add(priority, img);
    }
}
<小时/>
@Entity
public class CreationSet extends Model {
    @Id
    public String id;

    @Constraints.Required
    public String name;

    @Constraints.Required
    public String desc;

    public List<Creation> creations = new ArrayList<Creation>();

    public void addCreations(int priority, Creation creation){
        creations.add(priority, creation);
    }
}

然后遍历 CreationSet 列表并在 html 模板中生成正确的 HTML

这是正确的方法吗?或者说我应该怎么做?

最佳答案

顺便说一句,这可能应该在 Global 中目的。不在某些索引页上。

您可以覆盖启动应用程序时将调用的启动方法。 Play 文件夹示例中的所有灯具数据均在 Global 对象中完成。

否则我就会这样做。本地 Assets 的一个大问题是你依赖于现有的文件系统、相对/绝对路径,并且你可能最终会在本地/生产等之间搞乱。

真正的无状态系统是设置一个外部文件系统来管理 Assets 。以亚马逊 S3 为例。这样,如果您部署 Play 应用程序的新实例,您的静态资源仍然是连贯的。

编辑 1: 最后一点,如果生成正确的 html 意味着生成将被编译的 Java/Scala 代码,则不要这样做。编译时间相当长,而且你还要制作一个 一团糟。除了您之外,没有人能够理解您的代码。

编辑2:最后一点( promise ):作为金匠,你必须意识到工具有不同的目的,即使你有一把锤子,你也不能用它解决所有问题。让我说,作为一名程序员,Play 确实是一个非常漂亮的工具,具有许多优点,但对于您的情况来说,它可能不是最合适的锤子

关于java - 在 play 2.0.3 中,我有 'sets' 个图像,我想在启动服务器时对其进行分类并放入数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13331717/

相关文章:

java - Elasticsearch TransportClient

java - 将对象分配给字符串

java - 如何管理 native 堆?

php - 有人可以从我的服务器外部访问我的数据库吗?

c - C中通过http发送图像

Java Comparator、Comparable 和 TreeSet.contains

javascript - 如何执行使用 AND 和 OR 的条件 Mongoose 查询?

java - 搜索功能类似于 stackoverflow 用户页面上的搜索功能

request - 使用 Rascal 获取用户输入

javascript - 编译多个 Typescript 文件