今天突然想到一个问题,jsp执行时会被编译成servlet,然后被编译成.class文件,那么为什么servlet修改后需要重启tomcat,而jsp不用呢?
后来百度搜索了一下,发现jsp和servlet的编译时期不一样。使用myeclipse等工具创建的servlet在部署在tomcat时就已经被编译成.class文件了,而jsp被部署到tomcat时还没有被编译。当tomcat启动,第一次访问jsp页面时,jsp才会被编译成servlet,进而被编译成.class文件。
做了一个小测试,新建了一个Java web项目,将项目部署在tomcat后,%TOMCAT_HOME%\work\Catalina\localhost路径该项目下还是空的,启动tomcat并访问一个jsp,发现会生成该jsp的servlet和.class文件。