`
laorer
  • 浏览: 428387 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

当服务器启动之后,servlet的实例个数

阅读更多

上次面试时,问到了当服务器启动之后,多个用户访问servlet时,如何解决并发问题,当时感觉并发问题好像是由web容器解决的吧,后来问到那会有多少个实例呢?这个没有印象,就说好像是一个吧,他又追问,多个用户请求servlet,容器中只有一个servlet实例吗?又改口了,多个.

后来查了下资料,说法如下

===========================

一般来说servlet是线程安全的,所以每个用户每一次的调用都是独立的
一般由容器解决,但对于类变量,则需要自己控制,数据库访问,就有同步控制
当一个SERVLET被创建并且被装载到内存,它在内存中仅有一个实例,采用多线程去访问这个SERVLET实例

=====================================

还是不是很肯定,所以写了个例子验证了一下,确实只有一个实例,思想是在这个servlet中加一个int 型成员变量,第次访问,成员变量加1,多次访问,如果每次访问的成员变量都是加一的,则说明容器中只有一个servlet实例,反之则有多个实例.代码如下,

java 代码
  1. private int i=0 ;   
  2. private int k ;    
  3. private static int j=0;    
  4.   
  5. ublic void doGet(HttpServletRequest request, HttpServletResponse response)   
  6.         throws ServletException, IOException {   
  7.   
  8.     response.setContentType("text/html");   
  9.     PrintWriter out = response.getWriter();   
  10.     out   
  11.             .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");   
  12.     out.println("<HTML>");   
  13.     out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");   
  14.     out.println("  <BODY>");   
  15.     out.print("    This is ");   
  16.     out.print(this.getClass());   
  17.     out.println(", using the GET method");   
  18.     out.println("------------------");  
  19.     out.println(" private i= " + i++);   
  20.     out.println(" private k= " + k++);       
  21.     out.println(" static j= " + j++);   
  22.     out.println("------------------");   
  23.     out.println("  </BODY>");   
  24.     out.println("</HTML>");   
  25.     out.flush();   
  26.     out.close();   
  27. }   

其余代码都是自动生成的.结果是每次访问,成员变量都加一 .

下面面试时好像都会问到,只初始化一次,记住,

sevlet 生命周期
(1)加载和实例化
(2)初始化(容器调用Servlet的init()方法初始化这个对象init()只能用一次)
(3)请求处理(容器调用Servlet的service()方法对请求进行处理)
(4)服务终止(容器调用Servlet的destroy()方法将servlet实例从容器中移除,释放所有资源)

感觉好多问题都是相关的,但平时没有仔细想想,面试时,又不会有太多的思考机会,哎,愿大家有所收获吧.

分享到:
评论

相关推荐

    Java_Servlet技术概述和实例

    Java_Servlet技术概述和实例,Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用...

    servlet temple

     在服务器启动后,客户机首次向 Servlet 发出请求时  重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet ...

    Servlet项目实践 实现学生信息系统的全部代码

     ③调用Servlet实例对象的init()方法。  ④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数...

    java-servlet-api.doc

    然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    全书一共被压缩为5个rar,这是第二个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    全书一共被压缩为5个rar,这是第三个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    全书一共被压缩为5个rar,这是第四个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...

    Servlet的生命周期

    1.创建:当用户第一次请求servlet映射的路径时,服务器会加载servlet并实例化,后续用户请求同一个servlet时,服务器都会用同一个servlet实例来响应用户的请求。如果希望服务器启动后立即实例化servlet,需要在配置...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    全书一共被压缩为5个rar,这是第五个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...

    JSP和Servlet面试题

    Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》 方法初始化servlet,再根据不同请求调用doGet或doPost...

    java编程100例

    实例20程序启动界面 实例21 调色板 实例22 文件选择器 实例23 自定义光标 实例24 HTML浏览器 实例25抖动文字 实例26 阴影文字 实例27 3D文字 实例28 波浪文字 实例29 飞行文字 实例30 伸展文字 实例31 用Applet显示...

    jsp servlet 入门学习资料-新手一看就懂

    5.5 如何将一个普通的JSP文件转换为一个XML 文档 5.6 JSP1.1的DTD文件 第6章 JSP基础实例 6.1 第一个JSP程序—HelloWorld! 6.2 注释的使用 6.3 脚本元素 6.3.1 声明 6.3.2 表达式 6.3.3 脚本代码 6.4 page...

    java范例开发大全

    实例129 统计指定文件中的字符个数 183 实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel...

    pushlet实例(java服务端推送消息)

    实现多个客户端连接到web服务器,由服务端推送消息至客户端(或指定id的客户端),代码中没有用官网的jar文件,而是用的源码,做了一定的修改,实现了每个客户端都可以自定义id,然后服务端可以向指定id客户端推送消息...

    JAVA 范例大全 光盘 资源

    实例203 用Servlet获取Web服务器信息 666 实例204 可选择的图形验证码 670 实例205 简单的页面注册 675 实例206 用Servlet实现分页查看数据库 686 实例207 简单的BBS论坛 697 第21章 Java程序综合案例:教务处...

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包---java 源码 大量 实例

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    Java范例开发大全(全书源程序)

    实例129 统计指定文件中的字符个数 183 实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取...

    h_JAVA 2应用编程150例.rar

    实例74 实现一个简单的代理服务器 246 实例75 C/S结构的分布式运算 248 第7章 Java B/S结构编程 253 实例76 简单的Servlet程序 254 实例77 简单的留言簿 256 实例78 JSP+Java Bean的计数器 258 实例79 数据库查询 ...

Global site tag (gtag.js) - Google Analytics