在Tomcat中,我们可以配置Web应用程序,使用JSP servlet将非JSP文件视为JSP:
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/scripts/my.js</url-pattern>
</servlet-mapping>
是否有跨平台方式将资源映射到JSP servlet?
UPDATE :虽然没有可用于将资源映射到JSP servlet的跨平台方法,但可以使用<jsp-property-group>
元素将非JSP文件视为JSP。例如,为了将所有.js
个文件视为JSP
,我们可以将以下片段添加到web.xml
:
<jsp-config>
<jsp-property-group>
<url-pattern>*.js</url-pattern>
<is-xml>false</is-xml>
</jsp-property-group>
</jsp-config>
答案 0 :(得分:2)
JSP specification中没有指明。因此,没有跨平台方式来映射JSP servlet上的资源。
您最好的选择是让实际的.jsp
文件生成所需的JS内容,并将/scripts/my.js
映射到<jsp-file>
而不是<servlet-class>
,如下所示:
<servlet>
<servlet-name>js</servlet-name>
<jsp-file>/scripts/my.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>js</servlet-name>
<url-pattern>/scripts/my.js</url-pattern>
</servlet-mapping>
答案 1 :(得分:1)
可能最容易称之为.jsp。约定优于配置(在这种情况下甚至没有指定的配置方式)。
如果你把它称为.jsp会怎么样?
如果您希望.jsp在URL中不可见,您可以使用过滤器将URL内部转发到JSP(如果您有很多),或者像BalusC建议的映射(如果您只有几个) )。
答案 2 :(得分:0)
我同意Arafangion的第一个声明:servlet是跨平台开始的!
servlet是跨平台的,JSP(它是servlet的一个例子)是跨平台的,你提供的web.xml片段是跨平台的(它将在Windows上运行,就像它在运行时一样) Linux;您可以在Tomcat,JBoss或Websphere等中使用它。)
但是......
你知道,我确定,“Java”!=“Javascript”。您还知道servlet是服务器端的,但是.js脚本是在客户端处理的。
所以我对你为什么要把(服务器端)“”分配给看似是(客户端).js脚本的东西感到有点困惑?
答案 3 :(得分:-1)
不依赖于servlet平台(即,它们需要Java平台,通常是servlet平台)。
然而,这些平台通常很容易配置为在不同的操作系统上运行,但servlet本身并不一定知道这些细节。
所以......回答你的问题......可能是“不”,除非你限制你的答案,例如特定于多个操作系统的tomcat,或特定版本的tomcat和特定的替代servlet服务器。