与静态资源一样,是否可以提供放在webapps旁边的JSP

时间:2017-07-04 16:36:51

标签: jsp struts2 tomcat8

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

我正在为我的应用程序的静态资源提供服务,方法是将它们放在设置为server.xml的webapps之外。

现在我必须以相同的方式提供JSP,这不在我的上下文中。可能吗?或者有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

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

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

如果您需要了解有关Java访问资源的更多信息,请阅读Location-Independent Access to Resources

  

资源,名称和上下文

     

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

     

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

     

资源名称的解释与类加载器有关   实例。 <xsl:number level="single"/>类实现的方法执行此操作   解释

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

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

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

答案 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套接字与后端进行通信。