我想知道JSP有没有被编译?为什么我问的原因是因为每当我部署在Web服务器上我的Java EE应用程序,我只看到在WEB-INF文件夹的servlet和豆类类文件,因为它们被编译,但不是说JSP,所以它是如何工作什么是正常请求/响应周期的逻辑流程和大图.
gpe*_*che 57
基本上:
在servlet容器中,JSP servlet映射到以.jsp(通常)结尾的任何URL
当.jsp请求其中一个URL时,请求将转到JSP servlet.然后,此servlet检查JSP是否已编译.
如果尚未编译JSP,则JSP servlet会将JSP转换为实现该Servlet接口的某些Java源代码.然后它将此Java源代码编译为.class文件.此.class文件通常位于servlet容器的应用程序工作目录中的某个位置.
一旦JSP servlet从JSP源代码编译了servlet类,它就会将请求转发给这个servlet类.
问题是,除非您专门预编译JSP,否则所有这些都在运行时发生,并隐藏在servlet容器的工作目录中,因此它是"不可见的".另外请记住,这是"概念上"发生的事情,在此工作流程中可以进行多项优化.
是的,他们被编译了!
较旧的编译器甚至生成了java和类文件.
对于较新的编译器(至少从Sun JDK 6 update 30开始),它们可以在内存中执行所有字节码生成,因此您在应用程序work或temp目录中看不到任何痕迹.
JSP编译为Servlets.它们只有一个特殊的编译器,通常嵌入在容器中.
来自good ole维基百科:
从架构上讲,JSP可以被视为Java servlet的高级抽象.JSP在运行时被转换为servlet; 每个JSP的servlet都被缓存并重新使用,直到修改了原始JSP.
| 归档时间: |
|
| 查看次数: |
29461 次 |
| 最近记录: |