关于servlet

与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中已过时。

猜你喜欢

转载自arual.iteye.com/blog/2174729
今日推荐