一个JSP页面存在三种形式:1、JSP源码,这是开发者实际编写的形式。它存在于一个文本文件中,扩展名为.jsp,由HTML模板代码、JAVA语言声明和JSP伪指令及描述如何生成web页面对一特殊请求提供服务的动作混合而成。2、JAVA源码,JSP容器在需要时将JSP源码转换成等价的JAVA servlet源码。此源码典型情况保存在一个工作区,对调试很有帮助。3、已编译JAVA类,与其他任意JAVA类相似,生成的servlet代码在.class文件中被编译成字节码,准备好被载入和执行。
JSP容器基于每个文件的事件戳自动管理每种形式的JSP页面。在一个HTTP请求的响应中,容器检查自从上次.java源码被编译后,.jsp源文件是否被修改。如果是,容器重新将JSP源转换成JAVA源并再次编译它。
JSP容器的工作过程是当对一个JSP页面的请求发出后,容器首先判断与jsp文件对应的类的名字,如果该类不存在或比.jsp文件的老(意味着JSP源自从上次被编译后已经改变),然后容器为一个等价的servlet创建JAVA源码并编译它。如果servlet实例并未运行,容器载入该servlet类并创建一个实例。最后,容器发送一个线程在载入的实例中处理当前的HTTP请求。