在编译grails war时,我知道.groovy代码会被编译成字节码类文件,但我不明白容器(比如tomcat)如何知道如何在GSP被请求时编译它们。容器是否理解GSP?grails安装在服务器上这一事实是否与容器挂钩?
此外,当第一次使用GSP时,它会被编译,然后按需编译,而且只编译一次。这是正确的吗?谢谢。
发布于 2011-07-20 22:24:17
容器能理解GSP吗?
GSP实际上是在构建war时编译成类文件的,而不是在运行时由tomcat编译的-如果解压缩war文件,您可以查看它的作用(查看解压后的WEB-INF/classes目录):
...
gsp_appname_controllerNameviewName_gsp.class
gsp_appname_controllerNameanotherViewName_gsp.class
...容器在运行时不需要做任何事情,因为一切都是预编译的。
会将grails安装在服务器钩子上的事实放到容器中吗?
它不是这样的;应用程序运行所需的一切都包含在war中,因此将grails安装在容器的服务器上没有任何区别。
发布于 2011-07-20 22:23:48
好的,我在邮件列表上找到了这个:
从grails 1.2开始,gsps是在生成war文件时预编译的。
发布于 2011-07-20 22:31:38
GSP就像JSP一样,它们最终都是servlet。
因此,在构建.war文件时,GSP会预编译成servlet,并包含在WEB-INF/classes文件夹中。(它们以gsp_controlleraction_**.class开头)
所以,不,Tomcat不知道如何编译GSP,但它可以执行servlet。
文森。
https://stackoverflow.com/questions/6763298
复制相似问题