1

我在名为“webapp-1.0.war”的war文件中有一个主页home.html。当浏览器请求“ http://domain/myapp ”时,我希望 home.html 提供服务,但我希望浏览器地址栏继续显示“ http://domain/myapp ”。我不想在地址栏中出现“ http://domain/myapp/home.html ”。

所以我把它放到 web.xml 中:

<welcome-file-list>
  <welcome-file>home.html</welcome-file>
</welcome-file-list> 

我添加了一个带有以下内容的 jboss-web.xml:

<jboss-web>
  <context-root>myapp</context-root>
</jboss-web>

这几乎可以工作。当浏览器请求“ http://domain/myapp ”时,会发送 home.html,但 mime 类型是 application/octet-stream 而不是 text/html,这让 Firefox 认为这是文件下载。

4

3 回答 3

2

这不是默认行为。

Mime 类型通常在web.xml. 对于 Tomcat 和克隆,appserver-default mime 类型在/conf/web.xml.

然而,这可以被 webapp 中的自定义 mime 映射条目/WEB-INF/web.xmlHttpServletResponse#setContentType()servlet 中的 a 或请求-响应链中的过滤器覆盖。我可以想象有某种不良过滤器正在侦听,/*它会根据请求 URL 错误地嗅探和设置内容类型。看看你的 webapp 中是否存在类似的东西。

于 2009-12-08T18:24:43.017 回答
2

"octet-stream" 是 Restlet 中的默认 mime 类型。“html”在默认映射中定义。看起来你有自己的 MetaDataService。您可以像这样添加扩展映射,

getMetadataService().addExtension("html", MediaType.TEXT_HTML, true);
于 2009-12-08T19:57:00.107 回答
0

它确实似乎是 Restlet 的默认行为。再想一想,我想我喜欢这种行为。以 RESTfully 的方式思考,我认为整个 Web 应用程序(这是根 url 所暗示的)并不是我的浏览器真正有兴趣检索的资源。浏览器对“home”资源的 html 表示非常感兴趣,它是 Web 应用程序的一部分。所以我想我会离开它。但我会继续支持你,BalusC 花时间为我回答。

于 2009-12-08T19:33:35.540 回答