Jsp和Servlet修改代码时Tomcat的区别
2015-09-08 21:30
537 查看
编写网络项目时发现一点,
JSP修改代码不用重启Tomcat就可以直接使用,而Servlet修改代码后要重新启动Tomcat才能生效,去网上查了许多资料,对jsp和servlet在tomcat的加载过程也了解了一点,但还是不太明白,现把目前学到的总结下吧,先不论正误,等以后学深了再来研究纠错。
首先说一下加载过程
Tomcat每次启动时都会加载部署在它上面的项目,部署的项目在webapp目录下。
在Tomcat中,项目的jsp文件不变,而java文件都存储成了class文件。经过实验,每次修改java文件代码,原项目文件目录下的class文件和webapp下该项目的class文件都修改了。
对于jsp,运行时要先编译成servlet,里面的一些代码放在生成的servlet的doservice方法里面,再编译成class文件运行。jsp编译的文件放在Tomcat的work目录下的Catalina目录下面
目前网上有两个版本的解释:
1.
servlet在Tomcat中都是单例多线程的,每次Tomcat加载项目时会生成对应的servlet的一个实例,即运行对应class文件在内存里面形成一个对象。该实例是服务器启动时生成的,以后servlet即使改变代码,Tomcat和项目目录里面的class文件发送改变,也不会影响这个实例。要想改变生效,必须重启Tomcat。
而jsp,貌似是Tomcat的加载机制不一样,我觉得从单独生成了一个work目录来存储jsp的编译文件也可以发现,对于每次浏览器请求访问jsp,Tomcat都会去检查work子目录里面的编译文件是否已经被改变,如果改变则重新编译,这样就不需要重启服务器了
2.
另外一种说法是,修改实例的方法里面的代码不会造成实例的重新加载,而修改成员变量,增加成员方法则会需重新加载。
而jsp编译成servlet后是在doserive方法里面的,所以不需要重新重启Tomcat
这便造成了一点疑问,那在servlet的一个方法里面修改代码应该不用重启服务器也可以显示,但我实验后发现不行,但又很清楚的记得以前写代码的时候出现过修改servlet方法里面的代码(如加一条输出语句)没有重启也可以显示
这个解释暂且放在这吧,等以后学深了能够解释再来完善
JSP修改代码不用重启Tomcat就可以直接使用,而Servlet修改代码后要重新启动Tomcat才能生效,去网上查了许多资料,对jsp和servlet在tomcat的加载过程也了解了一点,但还是不太明白,现把目前学到的总结下吧,先不论正误,等以后学深了再来研究纠错。
首先说一下加载过程
Tomcat每次启动时都会加载部署在它上面的项目,部署的项目在webapp目录下。
在Tomcat中,项目的jsp文件不变,而java文件都存储成了class文件。经过实验,每次修改java文件代码,原项目文件目录下的class文件和webapp下该项目的class文件都修改了。
对于jsp,运行时要先编译成servlet,里面的一些代码放在生成的servlet的doservice方法里面,再编译成class文件运行。jsp编译的文件放在Tomcat的work目录下的Catalina目录下面
目前网上有两个版本的解释:
1.
servlet在Tomcat中都是单例多线程的,每次Tomcat加载项目时会生成对应的servlet的一个实例,即运行对应class文件在内存里面形成一个对象。该实例是服务器启动时生成的,以后servlet即使改变代码,Tomcat和项目目录里面的class文件发送改变,也不会影响这个实例。要想改变生效,必须重启Tomcat。
而jsp,貌似是Tomcat的加载机制不一样,我觉得从单独生成了一个work目录来存储jsp的编译文件也可以发现,对于每次浏览器请求访问jsp,Tomcat都会去检查work子目录里面的编译文件是否已经被改变,如果改变则重新编译,这样就不需要重启服务器了
2.
另外一种说法是,修改实例的方法里面的代码不会造成实例的重新加载,而修改成员变量,增加成员方法则会需重新加载。
而jsp编译成servlet后是在doserive方法里面的,所以不需要重新重启Tomcat
这便造成了一点疑问,那在servlet的一个方法里面修改代码应该不用重启服务器也可以显示,但我实验后发现不行,但又很清楚的记得以前写代码的时候出现过修改servlet方法里面的代码(如加一条输出语句)没有重启也可以显示
这个解释暂且放在这吧,等以后学深了能够解释再来完善
相关文章推荐
- Tomcat “缓存”清理
- Mac 搭建nginx+tomcat 实现负载均衡
- Tomcat 使用apr优化
- 熟悉linux-安装tomcat
- Mac 安装配置启动Tomcat
- Mac 安装配置启动Tomcat
- (总结)Nginx与Apache、Tomcat、Resin动静分离核心配置
- Tomcat 系统架构与设计模式 - 工作原理
- tomcat native
- 如何用myeclipse远程调试tomcat
- Tomcat配置SSL连接
- Tomcat中server.xml参数说明
- XAMPP设置tomcat自启动时,报无效的Win32程序
- nginx+tomcat负载均衡
- tomcat-5.5.26不能访问主页可以访问项目的一种情况
- 系统宕机后,eclipse 无法启动tomcat -提示问题Removing obsolete files from server
- eclipse的new server里tomcat7.0根本选不上解决方法
- 系统性能调优-tomcat
- 修改Tomcat使用的JVM内存大小
- Tomcat设置最佳线程数总结