JSP工作原理:
JSP会在客户端第一次请求JSP文件时被编译为HttpJspPage类。该类会被服务器临时存放在服务器工作目录里面(work\Catalina\localhost\jsp\org\apache\jsp目录下面)并将JSP文件编译为.class文件。该class文件便是JSP对应的Servlet。编译完成后再运行class文件来响应客户端。
JSP运行时会生成一个servlet实例,并调用其对应的jspInit()方法完成初始化工作(该方法在servlet生命周期中只会被调用一次)。然后创建并启动一个新的线程,新线程调用实例的jspService()方法。(对于每一个客户端请求,JSP引擎都会为其单独创建一个线程)
浏览器在调用JSP文件时,Servlet容器会把浏览器的请求和对浏览器的回应封装成HttpServletRequest和HttpServletResponse对象,同时调用对应的Servlet实例中的jspService()方法,把这两个对象作为参数传递到jspService()方法中。jspService()方法执行后将结果返回给对应的客户端。