关于Servelet在Tomcat中执行的原理
问题描述:
servelet接口的实现类在在部署在Tomcat项目中,但是我们并没有创建实现类的相关具体事例为什么,实现类里面的方法会执行呢?
解决办法:
- 当我们实现了Servelet接口,并且把类部署到web容器(Tomcat服务器)中的时候,我们还需要在web.xml的配置文件中配置Servelet实现类的相关映射:
- 当我们访问这个资源的时候:
我们通过上面的地址找到部署在Tomcat下的/hui项目,然后通过/serveletdemo这个资源路径会在配置文件web.xml中寻找有没有相对应的
<url-pattern>/serveletdemo</url-pattern>标签:
- 然后Tomcat会根据这个全类名将对应的字节码文件加载进内存
- 然后再通过Class.forName("com.yfsn.ServeletDemo")反射的方式获得类对象
- 再获得构造器调用invoke();方法执行。
- (Servelet3.0以后就支持注解配置资源路径的方式了)
但是Servelet的创建时机并不只是在有用户访问时才创建这一种情况,关于Servelet的创建时机,在另一篇中讲述。
迎风少年