最近在项目中,需要修改一个jsp的的内容,主要是设计里面的java代码,在对代码就行修改之后(为了防止出错,特意把原来的jsp文件备份了一个,另外copy了一份jsp),由于新的jsp执行出错,所在就直接把原来的jsp文件放回去
再次访问jsp的时候,发现报错是原来的jsp上面的错误,但是明明那个jsp文件已经删除了。
于是上网查资料,发现Tomcat在编译jsp文件的设计:在对jsp进行访问的时候,Tomcat会把jsp文件的修改时间与最近一次编译这个jsp文件的时间戳进行对比,若jsp文件的修改时间小于或者等于最近一次编译的时间,tomcat就不会再进行一次编译,而是直接把Tomcat的class文件供外部访问(JSP文件最终会被编译成class文件),所以也就出现了我上述说的问题,因为我是复制了jsp文件,所以老的jsp文件的修改时间是不是最新的,所以Tomcat不会再次进行编译,而是使用原来的class文件
解决办法:1 对要访问的jsp文件的就行任意不影响代码的操作比如换行、加空格
2 删除Tomcat的work目录,这时Tomcat就会重新编译jsp文件

本文介绍了一次在Tomcat环境下遇到的JSP文件更新后无法生效的问题及解决方案。详细解释了Tomcat如何判断是否需要重新编译JSP,并提供了两种解决方法。
655

被折叠的 条评论
为什么被折叠?



