如何刷新Java Web应用程序中的静态资源?

时间:2013-11-25 08:34:24

标签: java eclipse servlets

我正在开发一个动态存储数据的应用程序,并在生成或上传时显示它。但问题是当我上传任何图像然后它应该显示。它的路径也是完美定义的,但是直到我在eclipse中刷新整个应用程序它才会保持不变。 所以要更新应用程序,我必须刷新它。

我的应用程序是基于Java的,并且正在使用JSP和Servlet。是否有可用于更新或刷新应用程序的代码?

现在我通过右键单击 - >刷新或直接F5。

或者假设我想创建目录,那么我将在哪里创建它,无需刷新即可轻松访问。

当我将托管我的应用程序时,哪个地方更适合存储数据? 我知道它在网络应用程序之外,但任何特定的地方?因为没有驱动器,所以如何在我的代码中创建或创建目录并访问该目录。

3 个答案:

答案 0 :(得分:3)

对此的解决方案是名为design patternObserver。你应该读一读。

答案 1 :(得分:2)

  

是否有可用于更新或刷新应用程序的代码?   现在我正在通过右键单击 - >刷新或直接F5。

我认为您需要查看Eclipse中的工作区重新刷新选项(可从Eclipse版本3.7.x获得)。您可以在偏好设置>中启用它一般>工作区并选择Refresh on access或根据需要您可以更改为您需要的任何设置。

enter image description here

  

当我将托管我的应用程序时,哪个地方更适合存储数据?我知道它在网络应用程序之外,但任何特定的地方?因为没有驱动器,所以如何在我的代码中创建或创建目录并访问该目录。

如果放置在项目本身范围之外,静态内容的位置最佳。也许你服务器上的其他目录(无论是任何目录)。

我可以分享我通常看到的在我个人工作的不同应用程序中的趋势。我们有一个单独的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的一个很好解释的例子。