基于Session的单件(Singleton)对象

Spring学习笔记(五)。Bean的作用域,Singleton【单例模式】,Prototype【原型模式】,Request,Session 文章目录Bean的作用域1. Singleton2. Prototype3. Request4. Session Bean的作用域 在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象。 几种作用域中,request、session作用域仅在基于web的应用中使用(不必关心你所采用的是什么web应用框架),只能用在基于web的Spring ApplicationContext环境。 1. Single 阅读详情

基于Session的单件(Singleton)对象

Session Based Singleton Object

Use singleton objects stored in the Session object to organize and cleanup session based information

背景

在ASP.Net 当中,Session 对象经常被用来存储一个站点用户的信息,这对

于一个站点的个人用户来说是很有效的方法。Session通过使用一个关键字

作为它的索引。当应用这种方式使用它时,它可以引导大量的session名

称. 我们也可以建立一个singleton 对象来根据具体的项目进行分组,用

来存储给对象和给定的关键字。singleton 是一个很普通的设计模式,它规

定了如何保证在任意时间内只存在一个类的唯一的实例。

 

Singleton Session对象的优点

  • 以组织为目的对session 中的项进行分组。
  • 对在短时间过程中的一系列页面特别有用,如在一个站点注册。一旦
  • 过程结束,对象可以从session 中清除,所以内存可以再次被请求

    (使用服务器资源更佳)。

  • 修改session信息的影响力分析更容易。
  • 一个站点的用户域的信息被误用(如使用得当,比起只使用名称来确

      认更加清晰)。

Singleton Session对象的缺点

  • 很难查看session 中的个人信息的数量
  • ASP.Net 的跟踪结果不能显示对象内的值
  • 当使用进程以外的方式存储session(影响串行化)时,会导致性能下降。

实现

建立一个singleton类:

 

VB.net代码:

      

Public Class singleton

    'Name that will be used as key for Session object

    Private Const SESSION_SINGLETON As String = "SINGLETON"

    'Variables to store the data (used to be individual

    'session key/value pairs)

    Dim _lastName As String = ""

    Dim _firstName As String = ""

 

    Public Property LastName() As String

        Get

            Return _lastName

        End Get

        Set(ByVal Value As String)

            _lastName = Value

        End Set

    End Property

    Public Property FirstName() As String

        Get

            Return _firstName

        End Get

        Set(ByVal Value As String)

            _firstName = Value

        End Set

    End Property

 

    'Private constructor so cannot create an instance

    ' without using the correct method.  This is

    ' this is critical to properly implementing

    ' as a singleton object, objects of this

    ' class cannot be created from outside this

    ' class

 

    Private Sub New()

    End Sub

    'Create as a static method so this can be called using

    'just the class name (no object instance is required).

    'It simplifies other code because it will always return

    'the single instance of this class, either newly created

    'or from the session

    Public Shared Function GetCurrentSingleton() As singleton

        Dim oSingleton As singleton

        If System.Web.HttpContext.Current.Session(SESSION_SINGLETON) Is Nothing Then

            'No current session object exists, use private constructor to

            'create an instance, place it into the session

            oSingleton = New singleton

            System.Web.HttpContext.Current.Session(SESSION_SINGLETON) = oSingleton

        Else

            'Retrieve the already instance that was already created

            oSingleton = CType(System.Web.HttpContext.Current.Session(SESSION_SINGLETON), singleton)

        End If

        'Return the single instance of this class that was stored in the session

        Return oSingleton

    End Function

End Class

 

C#代码:

public class singleton
{
//Name that will be used as key for Session object
private const string SESSION_SINGLETON = "SINGLETON";
 
//Variables to store the data (used to be individual
// session key/value pairs)
string lastName = "";
string firstName = "";
 
public string LastName
{
get
{
return lastName;
}
set
{
lastName = value;
}
}
 
public string FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
}
}
 
//Private constructor so cannot create an instance
// without using the correct method.  This is
// this is critical to properly implementing
// as a singleton object, objects of this
// class cannot be created from outside this
// class
private singleton()
{
}
 
//Create as a static method so this can be called using
// just the class name (no object instance is required).
// It simplifies other code because it will always return
// the single instance of this class, either newly created
// or from the session
public static singleton GetCurrentSingleton()
{
singleton oSingleton;
 
if (null == System.Web.HttpContext.Current.Session[SESSION_SINGLETON])
{
//No current session object exists, use private constructor to
// create an instance, place it into the session
oSingleton = new singleton();
System.Web.HttpContext.Current.Session[SESSION_SINGLETON] = oSingleton;
}
else
{
//Retrieve the already instance that was already created
oSingleton = (singleton)System.Web.HttpContext.Current.Session[SESSION_SINGLETON];
}
 
//Return the single instance of this class that was stored in the session
return oSingleton;
}
}
 在页面中使用这个对象:
singleton oSingleton = singleton.GetCurrentSingleton();
oSingleton.FirstName = "Robert";

oSingleton.LastName = "Boedigheimer";

 

       这项技术可以在给定的类中存储更多的变量,也可以被一系列的Web页面来使

用,执行一定的过程。另外一个高级使用方法是在一个Web站点的过程中使用,通过对

singleton对象引用的移除,所有的内存中请求的session变量可以很容易的清除。 类可以

实现一个客户端用来清除引用的方法。可以命名为Dispose,类似在.NET 模式中提供的清

除对象的方法。

 

public static void Dispose()
{
//Cleanup this object so that GC can reclaim space
System.Web.HttpContext.Current.Session.Remove(SESSION_SINGLETON);
}

结论

      在Session对象中,使用singleton对象存储信息比使用session关键字存储信息有着更多的优点。它特别适合在一个站点内,一个时期内直到用户完成需要一个特别的过程的对象(并且容易检验变量的错误,并且在过程完成时释放资源等)。
考完CAIE认证一年后,谈谈它对我的职业的真实影响(干货) 大门,让面试官愿意给你机会,但进门之后的发展,还得靠持续的学习和项目积累。说实话,当时的心态是“考都考了,总比闲着强”,对这张证书能带来什么实际价值,心里并没有底。这种广泛的生态认可,让这张证书的“流通性”变得很强——无论跳槽还是在原公司发展,它都是一个被市场验证过的能力证明。对我个人而言,虽然没跳槽,但在年度调薪和争取内部项目时,持证经历也成了一个有力的“加分项”。这种巨大的薪资差距,恰恰反映了市场对“能落地、懂技术”的深度人才的渴求。考完证后的这一年,我看到了两条清晰的职业发展路径在自己面前展开。 阅读详情

相关推荐

2024从零开始使用VSCode编程(静态页面制作篇)HTML+CSS+JS阶段

VSCode第一个前端静态页面的编写

ssrsrrn的博客 9590

Spring 简单介绍

什么是Spring spring就是把每个bean(实体类)与bean的关系全部交给第三方容器进行管理。 那么这个容器就是spring,整个对象的生命周期管理的。 spring的核心 ioc(控制)、di(依赖)、aop(面向切面编程) di与ioc区别是什么? di做注入、ioc是创建对象。。 spring 与其他框架整合 Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架。 ...

程序员杂谈 353

基于wxWidgets框架,使用DialogBlocks建立OpenGL界面

前言 之前公司要求使用wxWidgets做GUI,基于OpenGL图形内核,开发三维可视化工具。目前初步开发工作基本已经完成,剩下都是完善了。这里记录一下最开始的框架搭建过程(当然是简化版啦)。wxWidgets结合OpenGL开发可以实现跨平台应用,再结合CMake和VS Code,整体开发工具用习惯了会感觉非常顺手。 界面编辑 首先,使用DialogBlocks新建一个工程,这里工程目录...

cyberobot的博客 2749

request,session作用域注入singleton

能够在HTTP request或者Session(甚至自定义)作用域中定义bean固然很好,但是Spring IoC容器除了管理对象(bean)的实例化,同时还负责协作者(或者叫依赖)的实例化。如果你打算将一个Http request范围的bean注入到另一个bean中,那么需要注入一个AOP代理来替代被注入的作用域bean。也就是说,你需要注入一个代理对象,该对象具有与被代理对象一样的公共接口,...

iteye_10254的博客 246

期货分仓系统CTP协议/国内期货软件源码

期货分仓系统与CTP协议以及国内期货软件源码是期货交易技术领域的几个重要方面。

q2247238820的博客 960

ZYNQ实战:如何用AXI-stream FIFO解决跨时钟域数据同步难题(附完整代码)

本文深入探讨了在ZYNQ项目中,如何利用AXI-Stream FIFO有效解决PS与PL之间的跨时钟域数据同步难题。文章详细分析了异步FIFO的架构设计、关键配置参数,并提供了PS端软件策略与PL端逻辑设计的完整代码示例,旨在帮助开发者构建稳定可靠的数据流通道,优化系统性能。

nginx7reverse的博客 754

java的html的作业,javaweb作业题

作业21.如果请求页面中存在两个单选按钮(假定单选按钮的名称为sex,分别代表男和女,该页面提交后,为了获得用户的选择项,可以使用以下()方法A)request.getParameter(sex);B)request.getParameter("sex");C)request.getParameterValues(sex);D)request.getParameterValues("sex");2...

weixin_29504571的博客 1227

2021英伟达暑期实习面经(芯片设计)

2021英伟达暑期实习面经(芯片设计前端/DFT) 准备了将近一个月,终于赶在三月的最后一天拿到了offer,暑期实习算是上岸了,后面还有阿里/华为等一些国内公司的面试,但既然拿到了nv的offer,后面的先就当积累面试经验吧~ 网上关于nv的实习or秋招面经很少,硬件岗的更少(约等于没有好吧)。之前准备面试的时候,在网上找了半天,好像就只在牛客网上见过一篇关于nv硬件岗的面经,幸好当时认真看了哈哈。所以既然幸运上岸了,想趁自己还记得,record一下,希望可以帮到有缘人呀~ 好了,废话不多说,开始正题。

Hadleysjtu的博客 1万+

Java Web基础入门第十九讲 Servlet开发——Session

SessionSession简单介绍在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。Session和Cookie的主要区别

李阿昀的博客 7609

PCL ICP算法实现点云精配准【2026最新版】

PCL1.14.1 及之前版本所实现的迭代最近点ICP算法。博客长期更新,本文最新更新时间为:2026年4月17日。

点云侠的博客 31万+

最小二乘(MLS)求点云法向量

MLS算法的基本思想是通过在点云的局部邻域内拟合一个光滑曲面,如平面或多项式曲面,以此来重建和处理点云数据。对于法向量估计,MLS通常在每个点的邻域内拟合局部平面,然后从该平面的法向量作为点的法向量。

twnkie的博客 744

Session对象的特点

Session对象的特点     Session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获取这些会话的有效数据。 常用方法如下: 1).public void setAttribute(Sting name, Object value),设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属

epm_kf6_10的博客 905

uniapp - Invalid value “iife” for option “output.format” - UMD and IIFE output formats are not suppo

Invalid value “iife” for option “output.format” - UMD and IIFE output formats are not supported for code-splitting builds. uniapp 编译报错,vite vue3 Hbuilder 中编译报错,uniapp 打包 App 报错(vue3)hbuilder提示错误,uniapp运行到手机/模拟器 App 报错(vue3)uniapp项目启动报错,如何解决这个问题,安卓app,苹果app

🏆 前端领域优质创作者 3965

Java面试-Spring Bean 的作用域:singleton、prototype、request、session

《Java面试200问》系列解析Spring Bean的5种作用域:singleton(默认单例)、prototype(每次创建新实例)、request(请求级)、session(会话级)和application(应用级)。文章通过代码示例和对比表格,详细说明各作用域特点、适用场景及注意事项,如singleton适合无状态服务,prototype适合有状态对象,request/session需配合代理模式使用。还提供了作用域选择指南、常见面试题解析和实际开发中的避坑技巧,帮助开发者深入理解Spring Be

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

singleton 、prototype、request 、session、application/global-session、websocket 分别都是啥?

这些术语是在Java Web开发中常见的作用范围或生命周期范围,用于定义在不同情况下对象的创建和销毁方式,以及对象的共享方式。以下是它们的解释: 1. **Singleton(单例)**: - 单例是一种设计模式,它确保在应用程序的生命周期中只创建一个实例。 - 在Spring中,当一个Bean被声明为Singleton时,Spring容器会确保在整个应用程序中只创建一个实例,并在需要时重复使用该实例。 2. **Prototype(原型)**: - 原型是一种设计模式,它允许在每

weixin_45791946的博客 573

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

spring scope注解说明 singleton prototype request session global session

 摘自《Spring 解密》 scope用来声明IOC容器中的对象应该处的限定场景或者说该对象的存活空间,即在IOC容器在 对象进入相应的scope之前,生成并装配这些对象,在该对象不再处于这些scope的限定之后,容器通常会销毁这些对象。打个比方吧!我们都是处在社会 (容器)中,如果把中学教师作为一个类定义,那么当容器初始化这些类之后,中学教师只能局限在中学这个场景中,中学,就可以看

mingtianhaiyouwo的博客 1287

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Singleton之C++部分一

采用静态或者全局变量的实现方案 由于C++不能保证静态或者全局对象的构造函数的调用顺序以及析构顺序。所以如果程序中有多个用此方法实现的Singleton类,它们之间又有某种构造依赖关系和析构依赖关系,就会造成灾难性的后果。所以,只有当肯定不会有构造和析构依赖关系的情况下,这种实现才是合适的。>优点实现简单,多线程下安全>缺点如果有多个Singleton对象的创建顺序有依赖时,千万别用;不是lazy

Dean Chen的专栏 2万+

Bean的几种作用域和设置方法:singleton、prototype、request、session、globalSession

Spring Framework支持五种作用域。其中,request、session 和 global session 三种作用域仅在基于web应用中使用(不必关心你所采用的是什么web应用框架),只能用在基于 web 的 Spring ApplicationContext 环境(仅适用于WebApplicationContext环境)。

qq_57182209的博客 297

4. Bean的scope作用域:singleton 、prototype、 request 、session

文章目录Bean的作用域1.singleton2. prototype(名词,原型)3. request4. session Bean的作用域 简单地讲,bean就是由IoC容器初始化、装配及管理的对象 . 作用域有四种: 1.singleton 当一个bean的作用域为Singleton,那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。 Singleton是单例类型,就是在创建起容器时就同时自动创建

你说的白是什么白_ 743

spring 注解 singleton prototype request session global session

摘自《Spring 解密》 scope用来声明IOC容器中的对象应该处的限定场景或者说该对象的存活空间,即在IOC容器在 对象进入相应的scope之前,生成并装配这些对象,在该对象不再处于这些scope的限定之后,容器通常会销毁这些对象。打个比方吧!我们都是处在社会 (容器)中,如果把中学教师作为一个类定义,那么当容器初始化这些类之后,中学教师只能局限在中学这个场景中,中学,就可以看做中学教

dingxingmei的专栏 2373

Spring笔记-ioc4 bean的作用域 singleton Prototype requesst session

Bean的作用域 在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 . 几种作用域中,request、session作用域仅在基于web的应用中使用(不必关心你所采用的是什么web应用框架),只能用在基于web的Spring ApplicationContext环境。 创建实体类: package com.lx.pojo; public class User { private Stri

m0_47734729的博客 245

Spring singleton和prototype的区别

在配置Spring bean元素时,其scope属性取值有如下几个: singleton:单例模式,即该bean对应的类只有一个实例,在spring 中是scope(作用范围)参数的默认值 ; prototype:表示每次从容器中取出bean时,都会生成一个新实例;相当于new出来一个对象; request:基于web,表示每次接受一个请求时,都会生成一个新实例; session:表示在每一个...

wlh2015的博客 947

【spring】Bean 的作用域(singleton、prototype、request、session、globalSession)、生命周期、初始化过程

aaa

m0_45406092的博客 4430

Spring Bean的作用域(Singleton、Prototype等)

通俗易懂!2025 年最新全家福(面试画图+口诀,背完直接秒)

likuoelie的博客 965

Bean的作用域及singleton和prototype的使用场景

容器最重要的任务是创建并管理JavaBean的生命周期,创建Bean之后,需要了解Bean在容器中是如何在不同作用域下工作的。 Bean的作用域就是指Bean实例的生存空间或有效范围。 singleton:在每个Spring IoC容器中,一个bean定义对应一个对象实例。 Spring容器的默认作用域,当一个bean的作用域为singleton时,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,就只会返回Bean的同一个实例。换言之,

yinianxx的博客 2857

Spring框架Bean对象的五个作用域

举例:session模式就相当于小孩吃一锅米饭,在吃同一顿饭的时间内,小孩向大人发出多次吃饭请求,吃的都是同一锅饭(直到这顿饭吃饭,到下一次吃饭的会话才会制造第二锅饭)(session模式是同一个会话内多次请求使用的是同一个bean对象,同一个吃饭时间内多次舀饭,舀的是同一锅饭)(在整个Portlet规范的web项目中,只会创建一个全局会话的Bean对象(一个Portlet规范的web项目保持一个bean对象)。编程人员可以控制bean对象的作用域(就是bean对象的作用范围)。

gulanga5的博客 1281
上一篇: 在VB6或ASP中调用webservice
下一篇: Null Object 设计模式
guoyan19811021
博客等级 码龄24年 5粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值