我正在开发一个动态存储数据的应用程序,并在生成或上传时显示它。但问题是当我上传任何图像然后它应该显示。它的路径也是完美定义的,但是直到我在eclipse中刷新整个应用程序它才会保持不变。 所以要更新应用程序,我必须刷新它。
我的应用程序是基于Java的,并且正在使用JSP和Servlet。是否有可用于更新或刷新应用程序的代码?
现在我通过右键单击 - >刷新或直接F5。
或者假设我想创建目录,那么我将在哪里创建它,无需刷新即可轻松访问。
当我将托管我的应用程序时,哪个地方更适合存储数据? 我知道它在网络应用程序之外,但任何特定的地方?因为没有驱动器,所以如何在我的代码中创建或创建目录并访问该目录。
答案 0 :(得分:3)
对此的解决方案是名为design pattern的Observer。你应该读一读。
答案 1 :(得分:2)
是否有可用于更新或刷新应用程序的代码? 现在我正在通过右键单击 - >刷新或直接F5。
我认为您需要查看Eclipse中的工作区重新刷新选项(可从Eclipse版本3.7.x获得)。您可以在偏好设置>中启用它一般>工作区并选择Refresh on access
或根据需要您可以更改为您需要的任何设置。
当我将托管我的应用程序时,哪个地方更适合存储数据?我知道它在网络应用程序之外,但任何特定的地方?因为没有驱动器,所以如何在我的代码中创建或创建目录并访问该目录。
如果放置在项目本身范围之外,静态内容的位置最佳。也许你服务器上的其他目录(无论是任何目录)。
我可以分享我通常看到的在我个人工作的不同应用程序中的趋势。我们有一个单独的tomcat服务器,它托管所有静态内容(所有媒体),我们的Web应用程序访问安全网络中的静态服务器(因为它被命名)。所有对静态内容的点击只能通过我们的应用程序服务器进行,因此所有直接命中都被拒绝或根本不被接受。
修改强>
我建议使用绝对路径 在Windows环境中 你将必须使用驱动器lletter 并将路径指定为X:\ some \ path 如果你想隐藏你的信件驱动器 由于明显的安全原因 我可以提出另一个想法
创意1 :创建一个单独的驱动器(让我们称之为驱动器F)并创建一个名为“static”的文件夹。然后在您的应用程序中,您只需使用此路径将所有请求转发到文件上传(F:\ static ......)。我建议从属性文件中加载目录名,而不是在代码中对其进行硬编码
Idea 2 :如果你不能创建一个单独的驱动器,那么在同一驱动器的根目录(C:\ static)上创建一个“静态”目录。创建一个用户组并授予他对此驱动器的读/写权限,并撤消此用户在所有其他驱动器上的写入权限(以防有人混淆此用户组)。接下来做同样的事情,即在您的应用程序中指定此路径。有一点是您必须使用该特定用户组运行您的应用程序,以确保您已设置的权限安全性可以实现。
答案 2 :(得分:1)
最佳做法是将此类数据存储在webapp的树之外,以避免重新部署问题。
你不能直接提供这些文件,通常是通过创建映射到例如的servlet来完成的。 images/*
;解析请求URL(例如)并基于该URL获取并提供服务。您需要为输出设置正确的MIME类型,并将请求的文件流式复制到servlet的输出。
可以在BalusC's blog上找到这种servlet的一个很好解释的例子。