【问题标题】:Hiding a view servlet in a Java MVC web application?在 Java MVC Web 应用程序中隐藏视图 servlet?
【发布时间】:2009-08-14 13:59:24
【问题描述】:

我正在使用一个非常简单的 MVC 框架,Bear Bibeault's Front Man,对于那些不熟悉的人来说,它与 Spring MVC 非常相似(至少在概念上)。

在大多数情况下,我使用 JSP 作为我的视图。为了防止直接访问视图,我将 JSP 文件放在 WEB-INF 目录中。

但是,在某些情况下,我需要使用 servlet 来表示我的视图。例如,我有一个生成 PDF 的视图 servlet,你不应该在 JSP 中这样做。我遇到的问题是这些视图可以通过在 URL 中输入视图的名称直接访问。授予视图抛出异常,因为它在请求中没有正确的模型(因为它没有击中模型构建页面控制器),但我希望视图 servlet 对用户隐藏,就像我的 JSP 视图一样是。

如何防止直接访问视图 servlet?


相关问题:

Protecting internal view layer template pages in servlet applications

【问题讨论】:

标签: java model-view-controller web-applications servlets


【解决方案1】:

第一步是使用适当的安全模型来防止访问您的文件。 与其使用 WEB-INF 目录不可作为 URL 访问的副作用(顺便说一句,不能保证适用于所有 Web 服务器),不如使用 web.xml 文件中的 & 元素来定义哪些目录可以或无法通过直接 URL 访问。

完成此操作后,您应该能够将 PDF 视图映射到 URL,通过 web.xml 文件保护该 URL,然后从您的 MVC 控制器/操作转发到视图(就像您转发到您的 JSP)

有关安全约束的更多信息,请参阅the Sun site

【讨论】:

  • 为什么这么多MVC框架都使用WEB-INF目录来隐藏视图有没有更好的办法呢?
  • 这不是框架本身,而是人们养成的习惯(包括框架的开发人员,他们无意中给人的印象是这样做的方式)。无论如何,按照 Sun 的说法,正确的做法是通过安全约束——花一点时间阅读我链接到的文章,谷歌一下,你应该很快就能把它整理好。
  • 更正,在 Tomcat 下运行良好,但我们的生产服务器是 Jrun,它是 J2EE 1.3,它不喜欢带有 security-constraint 属性的 web.xml。哦,好吧,对于那些不在过时的蹩脚服务器上的人来说,这是个好建议。
  • 很抱歉,尼莫。您使用的是哪个版本的 JRun? JRun '不喜欢' web.xml 的症状是什么?看看这篇文章 - adobe.com/devnet/server_archive/articles/… - 这表明 JRun 3.0 支持安全约束。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多