2010-08-16 90 views
2

在Tomcat中,我们可以将Web应用程序配置为使用JSP servlet将非JSP文件视为JSP:是否有一种跨平台的方式来访问JSP servlet?

<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> 

回答

2

这不在JSP specification中指定。因此,没有跨平台的方式来映射JSP servlet上的资源。

你最好的选择将是有实际.jsp文件生成所需的JS内容,并在<jsp-file>映射/scripts/my.js,而不是<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

我只是看看'JSP 2.1'规范,它在我看来,''可用于治疗非JSP文件,就好像它们是JSP。我测试了它,它工作。我会更新我的帖子以反映这一点。 – Behrang 2010-08-16 10:21:35

+0

噢不错,没想到立即。 – BalusC 2010-08-16 11:34:28

-1

是不是servlet的平台相关的定义(即,他们需要的Java平台,并经常servlet平台)。但是,这些平台反过来很容易配置为在不同的操作系统上运行,但细节不一定由servlet本身知道。

因此...在回答你的问题...可能是“否”,除非你限制你的答案,例如特定于多个操作系统的tomcat,或特定版本的tomcat和特定的替代servlet服务器。

+1

用“平台”的OP实际上意味着“servlet容器”,而不是“操作系统”,你似乎认为:) – BalusC 2010-08-16 02:01:29

+0

也许吧,但是术语问题,特别是当人们并不总是意识到的Java /是/平台,这里,而不是每个人都应该要知道,已经被彻底改造为Java的定义,我们有足够的过载条件,因为它是! – Arafangion 2010-08-16 03:48:34

0

我同意Arafangion的第一个说法:servlets是跨平台开始的!

一个servlet是跨平台的,一个JSP(这是一个servlet的例子)是跨平台的,而你给的web.xml片段是跨平台的(它将在Windows上运行,就像它运行的一样在Linux上;你可以在Tomcat,JBoss或Websphere等中使用它)。

无论其...

你知道,我敢肯定,认为 “Java” 的!= “的JavaScript”。你也知道servlet是服务器端的,但是.js脚本是在客户端处理的。

所以我有点困惑,为什么你似乎分配一个(服务器端)“”似乎是(客户端).js脚本?

1

可能比较容易只是把它的.jsp。约定优于配置(在这种情况下甚至没有指定的配置方式)。

如果您将其称为.jsp,会发生什么情况?

如果您希望.jsp在URL中不可见,您可以使用Filter将URL内部转发到JSP(如果有很多),或者像BalusC所示的映射(如果您只有一个少数)。

+0

“如果你把它叫做什么名.jsp休息?”我的所有页面中已包含'my.js'? :)技术性之外,我个人不喜欢有什么,但资源与''

相关问题