目录
一、插旗法的观察
二、验证servlet的单例
一、插旗法的观察
先给出源码
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/LifeServlet")
public class LifeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private int count = 0;
public void init() throws ServletException{
count = 0;
System.out.println("在init中完成计数器的初始化");
}
public void destroy() {
System.out.println("Servlet已经释放");
}
public LifeServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
count++;
out.println("这个Servlet已经被访问了"+count+"次了!");
System.out.println("该Servlet的doGet方法被执行了一次");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
System.out.println("该Servlet的doPost方法被执行了一次");
}
}
我们启动servlet服务之后,在console端可以看到这样的输出
我们在每次进入该网页时,console端都会有对应调用函数的输出
而在网页也会有对应的输出
当服务被关闭时,我们可以在console端看到这样的输出
通过插旗的方法,我们可以很清楚的了解到servlet的运行时,调用了什么方法,服务过程中发生了什么,可以让我们清晰的了解服务的过程。
二、验证servlet的单例
运行的同样是上述源码,我们可知有一个全局变量count,在edge浏览器中,我们访问页面可以看到
同样,我们立刻打开Chrome浏览器访问同样的页面,让我们看看页面会显示什么
可以看到,在刚刚的基础上,又多增加了一次访问,而不是从零开始计数,显示的是1,在这样一个servlet自身的访问计数器中,我们可以知道servlet只会在容器中初始化一个实例,也就是servlet的单例。
这次的学习分享大概就这么多,学习路上,诸君共勉,下次再见。



