java - 在 glassfish 上的哪里存储图像、CSS 和 javascript 文件?

标签 java css glassfish restlet

在发布此问题之前,我已经看了很多(相信我:),但我仍然感到困惑。场景如下:

使用 ReSTLet 2.0 在 glassfish v3 上托管 J2EE 网络应用程序 freemarker 模板文件位于/WEB-INF 文件夹中。这些模板使用相对 URL 链接到 jQuery/javascript 文件、一些静态图像和样式表。

由于将它们存储在/WEB-INF 中不是一个好习惯(如网络上许多地方所述)我将文件移动到 WebContent 文件夹


WebContent:
+--Images
   -.jpg, .gif files
+--Styles
   -myStyle.css
+--Scripts
   +--jQLabel
   +--mColorPicker
      +--Images
      +--javascripts
         -.js files

我在 freemarker 模板/html 中将它们称为:

<link rel="stylesheet" type="text/css" href="${baseRef}/Styles/myStyle.css"  />

其中 ${baseRef} 是站点的根引用。站点部署在/Winbook。所以 css 在本地主机上的 URL 如下所示:

http://localhost:8080/Winbook/Styles/winbookwall.css <-- 使用 GET 检索

问题:

对于上述每个资源,我都得到一个 404 :( 我不确定这是否真的是应该 存储 css、图像或脚本的方式,也不确定 WebContent 文件夹是否适合它被存储。

问题:

  1. 为什么以上不起作用?我的意思是一定有错误,我只是不知道 :)
  2. 将上述文件存储在网络服务器/glassfish 上的最佳位置是什么?
  3. 如果这些资源部署在 .war 中,我该如何引用它们(在 HTML/freemarker 模板中)? (如果它们被放置在 WebContent 中,它们将被部署在 war 文件中,对吗?这是“合法的”还是好的做法?似乎闻起来 :)
  4. 我们是否必须在 glassfish 中为所有此类资源创建备用文档根目录(或 ReSTLet 中的等效目录类?)
  5. 为基于 Intranet 的应用程序进行此类部署以无缝定位资源的“最佳”方式/地点是什么?基于 JNDI 的查找? (我不知道那是怎么回事,另一个问题可能是关于 SO ;)

我完全糊涂了!自从我必须编写一个完整的端到端 Web 应用程序以来已经有一段时间了,这通常由“其他人”处理:)

谢谢!

最佳答案

我可能迟到了才发布对此的答案,但在这里。正如我所提到的,ReSTLet 会拦截 URL,您必须使用 Directory 类返回静态内容 - 为每个文件夹使用路径“war:///”或“war:///images/”等进行初始化.

它不工作的原因是 ReSTLet 的路由问题——目录文件夹在 URL 的代码顺序中是“最后一个”。目录是使用 Template.MODE_STARTS_WITH 创建的,其他目录(即 ReSTLets 或其他资源)是 Template.MODE_EQUALS

您应该手动更改路由顺序,或者在路由时将其推到 URI 列表的顶部

希望能帮助遇到同样问题的任何人。

这是杰罗姆回答的相关问题:Restlet Routing Nightmare

关于java - 在 glassfish 上的哪里存储图像、CSS 和 javascript 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5639791/

相关文章:

java - 监控 Java EE 应用程序

JavaEE + Glassfishv3.0.1 : Losing session attribute (SessionId is not the same between request)

java - 在 Spring Boot 中使用 @PropertySource 读取属性文件时出错

java - 在 Websphere 中的 HMAC_SHA1 上获取无类定义

java - 在登录方法上同步代码

html - 如何隐藏滚动条,同时保持光标在 css 中向上或向下移动

java - GlassFish 为了防止内存泄漏,已强制注销 JDBC 驱动程序

java - 使用 MongoTemplate 时如何将类型从 ObjectId 转换为 Long?

javascript - 创建一个像圆形的披萨

ios - 在 Cordova/Ionic/iOS 中滚动时的空白区域