一、编译、配置、部署
servlet工程位于/home/www/wb/java/testservlet,源文件放在src目录下,web.xml和classes位于WEB-INF目录下。
发布目录在:/usr/share/tomcat7/webapps/testservlet。
以下是一次编辑、编译、配置、部署的过程:
1. export CLASSPATH=$CLASSPATH:/home/www/wb/java/testservlet/src/
2. CLASSURL="/home/www/wb/java/testservlet/WEB-INF/classes"
3. SRCURL="/home/www/wb/java/testservlet/src"
4. cd $SRCURL/com/xxx/servlet
5. vi HelloServlet.java
6. javac HelloServlet.java -d $CLASSURL
7. 修改web.xml
8. cp -r /home/www/wb/java/testservlet/WEB-INF /usr/share/tomcat7/webapps/testservlet
二、servlet生命周期
每个servlet服务器只创建单一实例,每个用户请求都会引发新的线程。首次创建servlet时,它的init方法会得到调用,因此,init是防止一次性设置代码的地方。在这之后,针对每个用户的请求,都会创建一个线程,该线程调用前面创建的实例的service方法。多个并发请求一般会导致多个线程同时调用service。之后,由service方法一句接收到的HTTP请求的类型,调用doGET,doPost,或其他doXxx方法。最后,如果服务器决定卸载某个servlet,他会首先调用servlet的destory方法。
三、SingleThreadModel接口
原则上,可以让servlet实现SingleThreadModel接口,阻止多线程访问,但是严重影响并发性能,servlet2.4规范中明确反对使用这种方式。绝不要使用这个接口,改用多线程同步控制共享资源较好。