我在Tomcat的应用程序中使用Struts2。
我正在为我的应用程序的静态资源提供服务,方法是将它们放在设置为server.xml
的webapps之外。
现在我必须以相同的方式提供JSP,这不在我的上下文中。可能吗?或者有没有办法实现这个目标?
答案 0 :(得分:1)
您可以将JSP放在任何位置,但Web应用程序应该知道资源的位置。
由于你没有指出你想要存储JSP的确切位置,我无法告诉你如何做到这一点。我可以说在Java中通过URL
检索资源,如果您可以将服务器指向存储资源的某个URL,那么您可以访问这些资源。
如果您需要了解有关Java访问资源的更多信息,请阅读Location-Independent Access to Resources。
资源,名称和上下文
资源由一个由一系列序列组成的字符串标识 子字符串,由斜杠(/)分隔,后跟资源名称。 每个子字符串必须是有效的Java标识符。资源名称是 形式
shortName
或shortName.extension
。shortName
和。extension
ClassLoader
必须是Java标识符。资源的名称独立于Java实现;在 特别是,路径分隔符始终是斜杠(/)。然而 Java实现控制了内容的细节 资源被映射到包含的文件,数据库或其他对象 实际的资源。
资源名称的解释与类加载器有关 实例。
<xsl:number level="single"/>
类实现的方法执行此操作 解释
静态资源和动态资源之间的区别:
请勿以与静态资源相同的方式混淆加载动态资源,因为静态资源可以随响应一起返回,但动态资源应该返回给服务器。
答案 1 :(得分:0)
JSP被编译成servlet(因此是java类),这些servlet由JSP容器使用相当复杂的生命周期执行,您可以在这里阅读:https://www.tutorialspoint.com/jsp/jsp_life_cycle.htm
所以简短的回答是:不。您无法在Web应用程序之外提供JSP页面,因为该Web应用程序的主要功能之一是编译和执行JSP。
正如另一个答案所示,您可以使用各种机制访问Java资源,但是您总是需要一些看起来像JSP容器来呈现JSP的东西。
如果您希望从内容投放网络等服务中提供更多应用,则必须使用其他技术。
您可以考虑创建一个纯粹的客户端应用程序,通过REST,graphql或Web套接字与后端进行通信。