`

为什么说Servlet是单实例的

 
阅读更多


 单实例让我联想到去年《设计模式》课上的“单例模式”,但现在要说的内容却和它无关,为什么说“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。
  • 大小: 18.1 KB
  • 大小: 18 KB
分享到:
评论

相关推荐

    深入学习:Java Servlet开发与实例

    本教程“深入学习:Java Servlet开发与实例”旨在帮助Java从业者深入理解Servlet技术,并通过实例进行实践,提升开发能力。 Servlet是Java平台上的一个标准API,定义了如何在服务器端处理HTTP请求和响应。它为...

    servlet 实例.rar

    总的来说,这个"简单的servlet实例"为我们提供了一个学习和实践Servlet技术的起点,特别是关于用户登录和注册功能的实现。通过深入理解和扩展这个实例,开发者可以进一步掌握JavaEE开发中的核心技能。

    Java Servlet开发与实例

    Java Servlet是Java EE平台中的核心组件之一,用于构建动态web应用程序。Servlet是一个Java类,它扩展了服务器的功能,处理来自客户端(通常是web浏览器)的请求并返回响应。本教程将深入探讨Java Servlet的基础知识...

    Servlet简单登陆验证实例

    本实例将讲解如何使用Servlet实现一个简单的登录验证功能。 首先,我们需要创建一个Servlet类。在Java中,Servlet是一个实现了javax.servlet.Servlet或javax.servlet.http.HttpServlet接口的类。在这个实例中,我们...

    java servlet mysql 简单实例

    在本实例中,我们主要探讨...总结来说,这个实例展示了如何在Java Servlet环境中,借助DAO模式实现与MySQL数据库的交互,而不依赖于Bean。通过理解Servlet、DAO模式、MySQL和JDBC,我们可以构建出更复杂的Web应用程序。

    servlet 留言板实例

    这个实例为初学者提供了一个了解Web开发基础的好机会,涵盖了从前端到后端的基本流程,以及如何将Java、HTML和数据库技术整合到一个实际的应用中。通过学习和实践这个实例,开发者可以掌握到如何处理HTTP请求,如何...

    servlet及MVC学习实例

    Servlet和MVC(Model-View-Controller)是Java Web开发中的两个重要概念,它们在构建动态网站和应用程序中起着核心作用。在这个学习实例中,我们将会深入理解这两个概念,并通过具体的代码示例来加深理解。 Servlet...

    servlet+eayui实例

    在IT行业中,Servlet、EasyUI、JSON、JDBC和Properties文件是构建Web应用程序的重要组成部分。以下是对这些技术的详细说明: ...这个实例为学习和理解这些技术如何协同工作提供了一个很好的实践平台。

    使用servlet实例

    在本教程中,我们将深入探讨如何创建Servlet,理解其编程模式,并通过向导快速创建Servlet实例。 ### 创建Servlet 1. **环境准备**:首先,确保你已经安装了Java Development Kit (JDK) 和集成开发环境(IDE),如...

    JSON servlet实例 Ajax应用

    在这个"JSON Servlet实例 Ajax应用"中,我们将探讨如何使用Servlet与客户端进行JSON数据交互,并结合Ajax实现异步通信。 首先,了解JSON的基本结构至关重要。JSON由键值对组成,键必须是字符串,且用双引号包围,值...

    servlet程序小实例

    在这个名为“servlet程序小实例”的压缩包中,我们很可能找到了一个简单的Servlet应用示例,对于初学者来说,这无疑是一个很好的学习起点。 在Servlet的世界里,开发者可以通过实现Servlet接口或继承HttpServlet类...

    servlet+jsp实例

    一个servlet的demo,使用servlet实现方法具体实现,jsp实现前端

    Servlet实例源码

    5. **文件上传和下载**:在某些Servlet实例中,可能包含文件上传和下载功能。这涉及到对HTTP请求的解析,以及如何安全地处理文件流,确保数据的完整性和安全性。 6. **异常处理**:源码中可能会包含错误处理逻辑,...

    Java WEB 篇八 tomcat 容器是如何创建 servlet 类实例?用到了什么原 理?.xmind

    Java WEB 篇八 tomcat 容器是如何创建 servlet 类实例?用到了什么原 理?

    java +jsp+servlet 登录验证实例

    Java + JSP + Servlet 登录验证实例 Java Web 开发中,登录验证是一个基本的功能模块,本文将通过 JSP + Servlet 来实现一个简单的登录验证实例。 知识点一:数据库设计 在本实例中,我们使用 MySQL 数据库来存储...

    servlet相关的实例(共三个包)第一包

    总结来说,这个压缩包提供了一个基于Servlet和JSP的人力资源管理系统实例,它是学习和实践Servlet技术的宝贵资源。通过对这个实例的学习,开发者不仅可以加深对Servlet的理解,还能了解到如何在实际项目中组织和实施...

    servlet相关的实例2(共3包)

    servlet相关的实例2 3 servlet相关的实例2 servlet相关的实例2

    java web servlet实例

    Java Web Servlet实例是Java...通过这个简单的Java Web Servlet实例,你可以学习到如何创建、配置和使用Servlet,理解其在Web应用中的作用。实践这个实例可以帮助巩固理论知识,为后续更复杂的Web开发打下坚实基础。

Global site tag (gtag.js) - Google Analytics