servlet是单态吗?

lovingfanglu 2009-01-05 01:25:10
Servlet是单态吗?
单态:内存中一个对象,那如果Test类下有一个静态的get()方法。
直接Test.get();这算单态吗?
还是必须在Test类个有一个公共的静态方法返回Test对象,构造方法定义为私有的才算单态...
...全文
764 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
中年風雨 2009-04-18
  • 打赏
  • 举报
回复
我也来凑凑热闹:
servlet不是单例的,不过一般情况下,servlet只有一个实例。
多数servlet是在被访问时由Container创建一个实例并初始化。此时servlet是单例模式。

如果servlet在Container启动时创建,则有可能会有多个实例。如下:
webl.xml中:

<servlet>
<servlet-name>ServletName1</servlet-name>
<servlet-class>test.ServetClass</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>ServletName2</servlet-name>
<servlet-class>test.ServetClass</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>ServletName1</servlet-name>
<url-pattern>/ServletName1</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>ServletName2</servlet-name>
<url-pattern>/ServletName2</url-pattern>
</servlet-mapping>


此时,servlet就有两个实例。
不过一般情况下,只配置一个servlet-mapping,也就只一个实例,也就相当于单例了。
rongyunsheng 2009-01-07
  • 打赏
  • 举报
回复
显然不是单例模式的,一般提到的都是单线程模式
我想单例模式跟单线程模式的区别,大家都晓得

特别要注意 Servlet及JSP中的多线程同步问题及servlet单线程模式
our651 2009-01-07
  • 打赏
  • 举报
回复
晕了我!
servlet有:
1、单线程模式
2、多线程模式(默认的servlet)

以上没有疑问吧,那么对应的:
1、单线程模式,一个web.xml注册的servlet名称会对每个request,新增一个servle实例
因为单线程,所以线程安全。
2、多线程模式,一个web.xml注册的servlet名称只有相应的一个实例存在,每个request
都是一个这实例在响应(多线程嘛),这时候线程不安全,要注意同步问题。

以上应该也没有疑问吧!
那么什么是单例模式呢?在概念上不就是和以上第二种情况一样吗?
你又要说了,我它的构造函数没有private啊。

参考JAVA与模式中对单例的解说,有一种不完全形态的单例,构造函数可以是public的。






HuanxueOrSeaty 2009-01-06
  • 打赏
  • 举报
回复
关注
hui_89418 2009-01-06
  • 打赏
  • 举报
回复
期待权威答案,谢谢
harryzyp 2009-01-06
  • 打赏
  • 举报
回复
servlet是单例的?应该不是吧...

怎么老大不解释下呢,大家都等着.
victorxiang 2009-01-06
  • 打赏
  • 举报
回复
仁者见仁智者见智
our651 2009-01-06
  • 打赏
  • 举报
回复
为什么都说吧是单例呢?
单例不就是只有一个实例吗?
ZiSheng 2009-01-06
  • 打赏
  • 举报
回复
单实例
dirtykiss 2009-01-06
  • 打赏
  • 举报
回复
servlet是线程安全的吗?困惑
our651 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 java2000_net 的回复:]
默认情况下servlet是singleton的 ?
谁告诉你的?
[/Quote]

Java Servlet Programming, 2nd Edition

3.4 Single-Thread Model
Although the normal situation is to have one servlet instance per registered servlet name, it is possible for a servlet to elect instead to have a pool of instances created for each of its names, all sharing the duty of handling requests. Such servlets indicate this desire by implementing the javax.servlet.SingleThreadModel interface. This is an empty, "tag" interface that defines no methods or variables and serves only to flag the servlet as wanting the alternate lifecycle.

A server that loads a SingleThreadModel servlet must guarantee, according to the Servlet API documentation, "that no two threads will execute concurrently in the servlet's service method." To accomplish this, each thread uses a free servlet instance from the pool, as shown in Figure 3-3. Thus, any servlet implementing SingleThreadModel can be considered thread safe and isn't required to synchronize access to its instance variables. Some servers allow the number of instances per pool to be configured, others don't. Some servers use pools with just one instance, causing behavior identical to a synchronized service( ) method.

Figure 3-3. The single-thread model

A SingleThreadModel lifecycle is pointless for a counter or other servlet application that requires central state maintenance. The lifecycle can be of some use, however, in avoiding synchronization while still performing efficient request handling.

For example, a servlet that connects to a database sometimes needs to perform several database commands atomically as part of a single transaction. Each database transaction requires a dedicated database connection object, so the servlet somehow needs to ensure no two threads try to access the same connection at the same time. This could be done using synchronization, letting the servlet manage just one request at a time. By instead implementing SingleThreadModel and having one "connection" instance variable per servlet, a servlet can easily handle concurrent requests because each instance has its own connection. The skeleton code is shown in Example 3-6.

pailman 2009-01-05
  • 打赏
  • 举报
回复
mark
梅子 2009-01-05
  • 打赏
  • 举报
回复
来学习~~
foxsh 2009-01-05
  • 打赏
  • 举报
回复
貌似问题多多哦!
记得Servlet肯定不可能是单态的。
applezhang1314 2009-01-05
  • 打赏
  • 举报
回复
Java Singleton 模式(单身模式,单态模式)是一种创建型设计模式。用来保证在运行的应用程序中,一个Class只是实例化一次,也就是只有一个相应的对象存在。
yjxqgd 2009-01-05
  • 打赏
  • 举报
回复
路过学习
yuanyangaas 2009-01-05
  • 打赏
  • 举报
回复
很想了解,说说看拉
fulianglove 2009-01-05
  • 打赏
  • 举报
回复
这个要看实现,默认的肯定不是。。。。
比如struts的ActionServlet就是singleton,只有一个。
zdyguilong 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hero272285642 的回复:]
引用 2 楼 java2000_net 的回复:
默认情况下servlet是singleton的 ?
谁告诉你的?


哈哈,老大有见解说一下嘛
[/Quote]

对啊,解释一下
MavenTalk 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 java2000_net 的回复:]
默认情况下servlet是singleton的 ?
谁告诉你的?
[/Quote]

哈哈,老大有见解说一下嘛
加载更多回复(7)
实习课题研究的主要内容与方法 办公自动化是新时期政府部门的一项重要基础性建设,是国民经济信息化在政府部门的具体体现之一,对推进政府管理现代化、决策科学化、运作高效化起着积极和重要的作用。办公自动化系统主要是为机关工作人员处理政务提供一个办公辅助手段。政府办公活动就是对各类办公信息(数据、文字、声音、图象、图形)进行采集、存储、处理、传送和输出的过程。办公自动化(Office Automation,OA),是利用先进的科学技术(主要是计算机、软件、网络技术),使办公室部分工作逐步物化于各种现代化设备和软件系统中,由办公室人员、设备和软件共同构成服务于某种目标的人机信息处理系统,包括自动办公辅助、报文审批、公文流转及内部交流系统等。其目的是尽可能充分利用现代技术资源与信息资源,提高政府部门行政管理工作效率和质量,辅助决策,以取得更好的工作效果。办公自动化系统是电子政务的基础,主要是辅助解决办公室事务的时间管理、成本管理、质量管理等三个管理要素。 特别应提出的是办公系统不单是公文管理,而是对包括业务数据资源在内的办公资源进行全面规范和利用以及提供协同办公的辅助手段。 本模块属于《国税总局综合办公平台》的“办公用品管理”子模块。本系统的总体结构图如下: 使用的主要技术: 技术:Java Swing编程,web技术; 开发工具:Jbuilder 数据库:Oracle 9i 数据访问方式:JDBC oracle thin 模式 参考设计模式:单态、工厂、DAO、MVC等 具体实现的功能及模块划分如下表: 功能类别 子功能 功能描述 办公用品使用 浏览办公用品 用户根据自己的权限,浏览可以申请的办公用品,可以查看要领用物品的详细信息及剩余数量 申请办公用品 填写办公用品申领单,提交申请后,即可根据该用品设定的申请流程进行申请流转 查看申领单 申请办公用品的用户可以看到自己的申请是否审批通过,没有申请通过的单子可以撤销或重新申请 查询办公用品 用户可以根据类别、办公用品名称、购入时间、使用者等进行查询 办公用品审批、签发 审批办公用品 具有审批权限的用户,核实申请单后,可以对申领单进行审批通过或驳回申领单 申请人可以看到自己申请单的状态。 查询审批单 具有审批权限的用户可以根据申请人名称查询到审批单,并按时间倒排序 签发办公用品 具有签发权限的用户可以看到审批通过的申领单,根据申领单的内容和审批意见签发办公用品,对已经签发的办公用品添上使用者和签发时间; 查询签发单 具有签发权限的用户可以查询到未签发的审批单; 可以根据使用者查询到已签发的审批单; 可以根据签发时间查询到已签发的审批单; 办公用品管理 设置办公用品类别 可以添加、删除、修改、查询办公用品的类别(不同的办公用品类别,拥有不同的属性) 分类办公用品 根据办公用品的用途、属性等,将办公用品归类,例如可分为文具类、计算机类、耗材类、外设类等 登记入库 根据办公用品类别的不同,选择不同的属性登记页面,并设置安全存储量(默认可以是0,表示不需要设置该值)进行登记入库 统计办公用品 根据使用者统计办公用品申领列表 存量提醒 对设置了安全存量数量的办公用品,当剩余数量小于安全存量值的时候,提示管理员该物品存量不足,并可以查看该物品的详细信息 权限管理 设置权限 可以添加、删除、修改一个权限 设置用户 可以添加、删除、修改一个用户 分配权限 对指定用户分配权限,也可以重新分配权限

67,547

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧