需要JSP重新编译吗?

时间:2012-03-01 00:10:11

标签: java html jsp

我只是想了解在下列情况下会发生什么的一般想法,而不需要了解技术细节。

JSP的主要优点是我们有单独的表示(静态HTML)和动态应用程序逻辑。所以我们可以在不影响另一个的情况下对其中任何一个进行更改现在假设,我们将预编译的JSP放入servlet或字节码中,并且我们想在表示部分进行更改,然后我们是否必须重新编译整个内容,即使我们没有对应用程序逻辑进行任何更改?

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

  

<强>重新加载的即可。设置为&#34; true&#34;如果您希望Tomcat监视WEB-INF / classes目录中的Java类文件或其中的JAR文件的更改   WEB-INF / lib目录。如果注意到这样的改变,Tomcat将关闭   下来并自动重新加载你的应用程序,然后拿起这些   变化。默认值(&#34; false&#34;)表示此类更改将是   忽略。注意:虽然此功能在开发过程中非常有用,   它需要开销来进行检查。这种能力应该   通常不用于已部署的生产应用程序。

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

答案 2 :(得分:1)

是和否。 JSP最终被编译成servlet,但是servlet容器通常会为你重新编译JSP,如果它已经改变了,这是一个相当快速的操作。

答案 3 :(得分:0)

没有。如果你改变了JSP,一般来说servlet / jsp容器会“看到”jsp发生变化,并会重新编译它。

话虽如此,我对您的部署模型并不清楚。如果您正在“预编译”asps并将其添加到.war中,那么您可能会失去运气。