大家都知道,JSP在请求的时候,会先转化成Servlet(其实就是个java类),然后生成class文件,再提供服务。

那么生成的java、class文件在哪呢?Eclipse中根本找不到呀!

位置在哪?

Tomcat在Eclipse的映射关系

首先应该了解的是Tomcat在Eclipse的映射关系,参考另一篇博文所述:Tomcat的服务器目录配置
双击Servers选项卡
会弹出以下窗口
image.png
可以了解到,Tomcat在Eclipse中提供了三种位置配置选项:

  1. Use workspace metadata
  2. Use Tomcat installation
  3. Use custom location

注意,如果你的Server Locations是灰色的,那么请先remove掉tomcat中部署的所有工程,然后clean一下。

Use workspace metadata

服务器目录,即生成的字节码和java文件所在的目录。它在你的eclipse的工作目录中

示例

jsp何时生成class文件,位置在哪? - 图2
jsp何时生成class文件,位置在哪? - 图3
比如我的工作目录是在F://workspace,那么在该目录下就可以看到这个.metadata目录了。
参考上面的配置目录F:\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0
这就是Tomcat映射的目录,在这个目录中有一个work目录和一个wtpwebapps目录

work目录

顺着:work\Catalina\localhost\项目名字\org\apache\jsp 就可以找到你的项目对应的java文件和class文件(注意要访问jsp后才会出现!)

wtpwebapps目录

存放对应的部署资源文件

Use Tomcat installation(推荐使用)

tomcat目录将被选定为tomcat所安装的目录

示例

结构与Use workspace metadata一样不变

语雀内容

image.pngimage.png
image.png

Use custom location

目录的结构与上面的类似,上面这两个都是不可以修改的,要么是workspace所在的目录,要么是tomcat的目录。
选择该项,可以自定义生成的空间。

另外说一点,JSP的生命周期

这是老生常谈的问题了,用户把工程部署到tomcat中,然后启动tomcat!此时就可以访问jsp了、

  1. 第一次访问JSP,会验证一下是否第一次访问,然后把JSP转化成java(Servlet),再编译成class文件。
  2. 生成的class文件中会自动生成几个方法:jspInit()、jspDestroy()、jspService().Tomcat仅仅在第一次请求时,调用jspInit方法,然后调用jspService进行处理。
  3. 之后的每个请求,都会分配一个线程调用jspService方法。
  4. 如果页面被销毁或者关闭,都会调用jspDestroy

  由于该文件是常驻内存的,又是多线程调用,所以访问的效率和速度都会很快。
jsp何时生成class文件,位置在哪? - 图7
按照前面所述的方法,就可以看到生成的文件结构了。