2012-03-01 96 views
1

我只想知道在下面的情况下会发生什么,而不涉及技术细节。需要JSP重新编译?

JSP的主要优点是我们有单独的表示(静态HTML)和动态应用程序逻辑。所以我们可以对其中的任何一个进行更改而不会影响其他两个。现在假设我们有一个预编译的JSP到servlet或者字节码中,我们想在表示部分做一些改变,那么我们是否必须重新编译整个东西,即使我们没有对应用程序逻辑做任何改变?

谢谢大家的回答,但是我得到的所有答案都指出,无论是自动还是手动,JSP都需要重新编译到servlet中,然后将其转换为相应的byctecode。总之,一个全新的文件将被创建,我想。

回答

2

只要是JSP,就不需要编译/转换。应用程序服务器会自动将您的JSP转换为相应的servlet,一个Java文件(首次访问JSP),然后将其编译为类文件。无论何时您更新JSP文件以及服务器何时收到对该资源(JSP)的请求,它都会检查上次更新的时间,并在需要时执行上述工作。

0

不可以。如果更改了JSP,一般来说,servlet/jsp容器将“看到”jsp已更改并将重新编译它。

这就是说,我不清楚你的部署模型。如果你是“预编译”这些asps并将它们添加到你的.war中,那么你可能会失败。

1

如果您使用Tomcat,它被归类为“聪明的容器”。它会监视.JSP上的更改,并将它们编译为Servlet类并在需要时重新加载。

http://tomcat.apache.org/tomcat-3.3-doc/appdev/deployment.html

重新装入。如果您希望Tomcat监视WEB-INF/classes目录中的Java类文件或WEB-INF/lib目录中的JAR文件的更改,请将其设置为“true”。如果发现这样的变化,Tomcat将关闭 并自动重新载入您的应用程序,并获取这些 更改。默认值(“false”)意味着此类更改将被忽略 。注意:虽然此功能在开发过程中非常有用,但需要开销来执行检查。此功能应该通常不会用于已部署的生产应用程序中。

Tomcat also periodically checks timestamps of JSP s确定它们是否被更新。

1

是,否。 JSP最终被编译成servlet,但是如果servlet容器发生了变化,它通常会重新编译JSP,这是一个相当快速的操作。