与servlet生命周期相关的三个方法 :
只要servlet以创建,就调用其init方法。
只要客户端有请求过来,就调用其service方法。
只要servlet被移除,destroy方法,garbage clooected 和finalized方法都将被调用。
与servlet生命周期无关的两个方法:
getServletConfig 返回一个servletConfig object, 包含所有配置信息。
getServletInfo 返回servlet的基本信息(作者,version等)
编译:
javac -d ./WEB-INF/classes ./WEB-INF/classes/FistServlet.java
当你执行一个Java程序,就是使用 java 命令的时候,比如 java helloworld,那么java虚拟机就必须要去找相关的
helloworld.class字节码文件,然后进行类加载,之后才能运行,那么计算机硬盘这么大,java虚拟机去哪里找helloworld.class呢?
这就是变量classpath的用途。虚拟机只会去classpath下面指定的路径里面找。
set classpath=d:\;. 也就是说,设置了两个,一个事D盘下面,另一个是点,也就是在当前目录下找!
所以JVM就会首先去D盘找Thelloworld.class,如果找到了就执行,如果没有就去当前目录下找,如果还是没有就会跑出java.lang.NoClassDefFoundError异常!
如果某个servlet的映射路径为一个正斜杠(/), 那么这个servlet就成为当前web应用程序的缺省servlet
凡是在web.xml文件中找不到匹配的URL, 它们的访问请求都将交给缺省servlet处理。
在tomcat的conf\web.xml文件中,注册了一个名称为org.apache.catalina.servlets.DefaultServlet 的servlet, 并将这个servlet设置为缺省servlet。
当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是访问这个缺省servlet。
servlet old实现线程同步的方法是继承SingleThreadModel接口。(此接口中没有声明任何函数,只是作为一个标记接口使用。)
对于实现了SingleThreadModel的servlet,如果一个客户端的请求还在进行中,另一个客户端也来请求同一个servlet, 那么虚拟机会再重新创建一个servlet为第二个客户端服务。
这样也就避免了线程安全的问题。不过此方法在servlet2.4中已过时。