是否可以像放置在 Tomcat 中的 web 应用程序之外的静态资源一样提供 JSP?

问题描述 投票:0回答:2

我在 Tomcat 应用程序中使用 Struts 2。

我通过将应用程序的静态资源放置在

webapps
之外并在
server.xml
中进行设置来提供它们。

现在,我想以相同的方式为我的 Web 应用程序上下文之外的 JSP 提供服务。是否可以?或者有什么办法可以达到这个目的吗?

jsp tomcat resources dynamic-content static-content
2个回答
1
投票

您可以将 JSP 放置在任何地方,但 Web 应用程序应该知道资源的位置。

由于您没有指出要存储 JSP 的确切位置,所以我无法告诉您如何做到这一点。我可以说在Java中资源是通过

URL
检索的,如果你可以将服务器指向存储资源的某个URL,那么你就可以访问这些资源。

如果您需要了解有关如何在 Java 中访问资源的更多信息,您可以阅读与位置无关的资源访问

资源、名称和上下文

资源由一个由一系列序列组成的字符串来标识 子字符串,由斜杠 (/) 分隔,后跟资源名称。 每个子字符串必须是有效的 Java 标识符。资源名称是 形式为

shortName
shortName.extension
shortName
extension
必须是 Java 标识符。

资源的名称与Java实现无关;在 特别是,路径分隔符始终是斜杠 (/)。然而, Java 实现控制内容的细节 资源被映射到文件、数据库或其他包含以下内容的对象 实际资源。

资源名称的解释与类加载器相关 实例。

ClassLoader
类实现的方法可以做到这一点 解释。


静态资源和动态资源的区别:

  • 静态资源可以直接通过浏览器运行
  • 动态资源(如 JSP)在服务器上运行。

不要将加载动态资源与加载静态资源混淆,因为静态资源可以随响应返回,但动态资源应该返回给服务器。


0
投票

JSP 被编译成 servlet(因此是 java 类),由 JSP 容器使用相当复杂的生命周期执行,您可以在这里阅读:https://www.tutorialspoint.com/jsp/jsp_life_cycle.htm

所以简短的回答是:不。 您无法在 Web 应用程序之外提供 JSP 页面,因为该 Web 应用程序的主要功能之一是编译和执行 JSP。

正如另一个答案所暗示的,您可以使用各种机制访问java资源,但您总是需要看起来像JSP容器的东西来呈现JSP。

如果您想通过内容交付网络等方式提供更多应用程序服务,则必须转向不同的技术。

您可能会考虑创建一个纯粹的客户端应用程序,通过 REST、graphql 或 Web 套接字与后端通信。

© www.soinside.com 2019 - 2024. All rights reserved.