单实例让我联想到去年《设计模式》课上的“单例模式”,但现在要说的内容却和它无关,为什么说“Servlet是单实例的呢?”,我们来看一个示例程序:
package cn.edu.ynu.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SingleInstance extends HttpServlet {
private int a = 0;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int b = 0;
a ++;
b++ ;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Single Instance Test</title></head>");
out.println("<body>");
out.println("a = " a "<br>");
out.println("b = " b);
out.println("</body></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
在该Servlet中,a是一个实例变量,而b则是一个方法里面的局部变量,第一次运行这个Servlet得到的结果为:
这个是可以理解呢,因为a和b在初始化后都执行了加1的操作,但是第二次执行这个Servlet会出现什么结果呢?
答案是a = 2 b= 1,看下列截图:
解释:当我第一次调用这个Servlet的时候,服务器就会创建一个该Servlet(示例中为SingleInstance)的一个实例(也就是一个对象),此时a和b初始化为0,并且a和b分别执行了加1的操作;而当我们第二次调用该Servlet时,因为Servlet是单实例的,这说明,此时已经有一个SingleServlet的实例,所以实例变量a不在执行初始化,而b因为是一个方法里的局部变量,所以会再次初始化为0,故而在a、b分别执行加1之后,a和b的值分别为2和1。
相关推荐
servlet及MVC学习实例,servlet及MVC学习实例
深入学习:Java Servlet开发与实例,是java从业者的必备资料
servlet 使用实例 如何创建servlet ,servlet编程模式,使用向导创建servlet
一个servlet的demo,使用servlet实现方法具体实现,jsp实现前端
简单的servlet实例 只有简单的用户登陆,注册功能!
Java WEB 篇八 tomcat 容器是如何创建 servlet 类实例?用到了什么原 理?
Servlet简单登陆验证实例 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45167773
JSP基础 Servlet初级教程,和实现例子
servlet相关的实例2 3 servlet相关的实例2 servlet相关的实例2
这是一个集合servlet json jdbc解析properties easyui的 实例
servlet相关的实例
使用原始的servlet操作熟悉EJB的实体管理。 本实例主要功能:实现对员工、角色、账号、部门的关系管理。 本实例的实体设计:部门-员工:一对多。员工-账号:一对一。账号-角色:一对一。 主要采用EJB进行会话管理。...
java微信公众号实例源码Servlet
使用java的servlet,借助eclipse新建dynamic web project. 实现了dao模式下(没有使用bean),对mysql数据库的读取。
Servlet MVC的项目实例,具体请参照 http://blog.csdn.net/songdeitao/article/details/17758589 其中包含项目代码和图解,有什么问题还请参照以上博文。
最简单的 Jsp+Servlet+JavaBean 实例,简单易懂
此程序是Servlet的一个小实例,对初学Servlet的学者来说是个很不错的资源哦!
jsp+servlet实例数据库jsp+servlet实例数据库