首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >像静态资源一样,是否有可能为放在webapps之外的JSP提供服务

像静态资源一样,是否有可能为放在webapps之外的JSP提供服务
EN

Stack Overflow用户
提问于 2017-07-05 00:36:51
回答 2查看 77关注 0票数 1

我在Tomcat的应用程序中使用了Struts2。

我通过将应用程序的静态资源放在server.xml中设置的webapps之外来为它们提供服务。

现在我必须以同样的方式为JSP提供服务,这超出了我的上下文。有可能吗?或者有什么方法可以做到这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2017-07-05 01:32:14

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

由于您没有指出要存储JSP的确切位置,因此我无法告诉您如何做到这一点。我可以说,在Java语言中,资源是通过URL检索的,如果您可以将服务器指向存储资源的某个URL,那么您就可以访问这些资源。

如果您需要了解更多关于如何在Java中访问资源的信息,可以阅读Location-Independent Access to Resources

资源、名称和上下文

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

资源的名称独立于Java实现;特别是,路径分隔符始终是斜杠(/)。但是,Java实现控制如何将资源内容映射到包含实际资源的文件、数据库或其他对象的细节。

资源名称的解释是相对于类加载器实例的。由ClassLoader类实现的方法执行此解释。

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

browser

  • dynamic资源(如JSP)在服务器上运行,可以直接运行
  • 静态资源。

不要混淆加载动态资源的方式与加载静态资源的方式相同,因为静态资源可以随响应一起返回,但动态资源应该返回给服务器。

票数 1
EN

Stack Overflow用户

发布于 2017-07-05 00:45:14

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

因此,简短的答案是:不。您不能在web应用程序之外提供JSP页面,因为web应用程序的主要功能之一是编译和执行JSP。

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

如果你想通过像内容分发网络这样的东西为你的应用程序提供更多的服务,你就必须转向一种不同的技术。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44910754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档