clean、clean tomcat work directory 和 build path、deployment assembly

 

 eclipse中每次保存修改过的java文件,它都会重新编译,编译后的文件就放在build path里的Output folder。或者是xml文件.properties文件等都会将新内容放到输出文件夹。而build path的libraries中的jar包是保证这些类的成功编译。

clean、clean tomcat work directory 和 build path、deployment assembly
 

然后将项目发布在server上,eclipse会从deplyment assembly中获取要发布的内容,当然发布不需要源码,只需要class文件,这些class文件就是从上面放置编译好的class文件的输出文件夹寻找。比如deployment assembly中将src/main/java中的类及配置文件发布到WEB-INF/classes下,那去哪里找这些class文件呢?就是在build path中看到test/src/main/java的输出文件夹是/test/target/classes,那就会到计算机上项目路径寻找项目src/main/java目录下的java文件对应的class文件并放入到WEB-INF/classes中(target/classes在eclipse的Project Explorer中可能看不见在计算机项目目录中能看到)。

 
clean、clean tomcat work directory 和 build path、deployment assembly
 

server右键中有个clean的选项,它的作用是将发布到eclipse自己的webapps目录(一般自动命名为wtpwebapps)中的项目删掉重新从output folder中拉取。比如我把target/classes中的一个编译好的class文件删除掉,当然这时候java文件还是在的,那我clean一下项目,就会报如下错误。

 
clean、clean tomcat work directory 和 build path、deployment assembly
 

clean tomcat work directory的作用则是将已发布项目中存放jsp转译后的class文件的work目录删除

Publish:是将你的web程序发布到tomcat服务器上,这样通过浏览器就可以访问你的程序。
Clean:是指原先编译到tomcat服务器上的程序,先清除掉,然后再重新编译。
Clean Tomcat Work Directory:tomcat的工作目录,也就是tomcat把jsp转换为class文件的工作目录。

  • tomcat的工作原理是当浏览器访问某个jsp页面时,tomcat会在work目录里把这个jsp页面转换成.java文件,比如将index.jsp转换为index_jsp.java文件,而后编译为index_jsp.class文件,最后tomcat容器通过ClassLoader类把这个index_jsp.class类装载入内存,进行响应客户端的工作。
  • tomcat会定时稍描容器内的jsp文件,读取每个文件的属性,当发现某个jsp文件发生改变时(文件的最后修改时间与上次稍描时不相同时),tomcat会重新转换、编译这个jsp文件。但是tomcat的稍描是定时的不是实时的,这也正是为什么jsp文件修改后需要几分钟的时间来等修改过的jsp生效。当然为了即刻生效,很多老前辈都会建议在修改jsp页面后立即清除work目录里的文件。
  • 另外,tomcat容器中,对转换后的java文件(比如:index_jsp.java)的编译最大只支持64k,所以在其他容器中的jsp移植到tomcat容器中时会遇到大jsp文件会发生无法编译的情况,所以建议把jsp中的业务逻辑写入单独的类,在jsp中通过调用这个类的静态方法来执行,并将jsp页面中的js提取出来放到单独的js文件内。

Publish:是将你的web程序发布到tomcat服务器上,这样通过浏览器就可以访问你的程序。
Clean:是指原先编译到tomcat服务器上的程序,先清除掉,然后再重新编译。
Clean Tomcat Work Directory:tomcat的工作目录,也就是tomcat把jsp转换为class文件的工作目录。

  • tomcat的工作原理是当浏览器访问某个jsp页面时,tomcat会在work目录里把这个jsp页面转换成.java文件,比如将index.jsp转换为index_jsp.java文件,而后编译为index_jsp.class文件,最后tomcat容器通过ClassLoader类把这个index_jsp.class类装载入内存,进行响应客户端的工作。
  • tomcat会定时稍描容器内的jsp文件,读取每个文件的属性,当发现某个jsp文件发生改变时(文件的最后修改时间与上次稍描时不相同时),tomcat会重新转换、编译这个jsp文件。但是tomcat的稍描是定时的不是实时的,这也正是为什么jsp文件修改后需要几分钟的时间来等修改过的jsp生效。当然为了即刻生效,很多老前辈都会建议在修改jsp页面后立即清除work目录里的文件。
  • 另外,tomcat容器中,对转换后的java文件(比如:index_jsp.java)的编译最大只支持64k,所以在其他容器中的jsp移植到tomcat容器中时会遇到大jsp文件会发生无法编译的情况,所以建议把jsp中的业务逻辑写入单独的类,在jsp中通过调用这个类的静态方法来执行,并将jsp页面中的js提取出来放到单独的js文件内。