我正在使用一个非常简单的 MVC 框架,Bear Bibeault's Front Man ,对于那些不熟悉的人来说,它与 Spring MVC 非常相似(至少在概念上)。
对于大多数情况,我使用 JSP 作为我的 View 。为了防止直接访问 View ,我将 JSP 文件放在 WEB-INF 目录中。
但是,在某些情况下我需要使用 servlet 来表示我的 View 。例如,我有一个生成 PDF 的 View servlet,您不应该在 JSP 中执行此操作。我遇到的问题是可以通过在 URL 中键入 View 名称来直接访问这些 View 。授予 View 抛出异常,因为它在请求中没有正确的模型(因为它没有命中模型构建页面 Controller ),但我希望 View servlet 对用户隐藏,就像我的 JSP View 一样是。
如何防止直接访问 View servlet?
<小时/>相关问题:
Protecting internal view layer template pages in servlet applications
最佳答案
第一步是使用适当的安全模型来防止访问您的文件。 您应该使用 web.xml 文件中的 & 元素来定义哪些目录可以访问,而不是使用 WEB-INF 目录作为 URL 无法访问的副作用(顺便说一句,这不能保证适用于所有 Web 服务器)或者无法通过直接 URL 访问。
完成此操作后,您应该能够将 PDF View 映射到 URL,通过 web.xml 文件保护该 URL,然后从 MVC Controller /操作转发到 View (就像转发一样)到您的 JSP)
参见the Sun site有关安全约束的更多信息。
关于java - 在 Java MVC Web 应用程序中隐藏 View Servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278006/