当您编译Grails WAR时,我理解.groovy代码被编译成字节码类文件,但是我不知道容器(比如Tomcat)如何在请求GSP时知道如何编译它们。容器是否了解GSP? Grails安装在服务器上是否与容器连接?此外,当第一次使用GSP时,它会按需编译,仅编译一次。这正确吗?谢谢。
容器能够理解GSP吗?
GSP实际上是在构建war文件时编译成类文件的,而不是由Tomcat在运行时编译 - 如果您解压缩war文件,可以查看它的操作(查看未压缩的WEB-INF/classes目录):
...
gsp_appname_controllerNameviewName_gsp.class
gsp_appname_controllerNameanotherViewName_gsp.class
...
容器在运行时不需要做任何事情,因为所有东西都是预编译好的。
grails安装在服务器上是否会连接到容器?
不会;应用程序运行所需的所有内容都包含在war中,因此在容器服务器上安装grails没有任何影响。
好的,我在邮件列表上找到了以下内容:
自从Grails 1.2版开始,在生成WAR文件时,GSP文件将被预编译。
GSP(Groovy Server Pages)类似于JSP(Java Server Pages),它们最终都是Servlet。
因此,当您构建.war文件时,您的GSP将被预编译为Servlet并包含在WEB-INF/classes .war文件夹中。(它们以gsp_controlleraction_**.class开头)
所以,不,Tomcat不知道如何编译GSP,但它可以执行Servlet。
Vincent。
org.codehaus.groovy.grails.web.pages.GroovyPage
,而该类又扩展了 groovy.lang.Script
。它们不是servlet,而是助手类,被Grails servlet间接调用以呈现视图。 - Burt Beckwith