基于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关键字存储信息有着更多的优点。它特别适合在一个站点内,一个时期内直到用户完成需要一个特别的过程的对象(并且容易检验变量的错误,并且在过程完成时释放资源等)。
S32DS3.5图形化配置实战:从零构建S32K144通信接口工程 本文详细介绍了如何使用S32DS3.5图形化配置工具从零构建S32K144通信接口工程。通过实战演示引脚配置、时钟树设置、SPI接口搭建等关键步骤,帮助开发者快速掌握NXP S32K系列开发技巧,提升嵌入式开发效率。特别针对S32DS3.5版本的新特性进行了深度解析,包括智能代码生成和调试优化方法。 阅读详情

相关推荐

若依前后端分离版集成nacos

服务动态配置与服务注册发现根据公司要求,需要将项目集成到nacos中,当前项目是基于若依前后端分离版开发的,若依的版本为3.8.3,若依框架中整合的springBoot版本为2.5.14。Nacos核心提供两个功能:服务注册与发现,动态配置管理。

NDF923的专栏 4645

Spring 简单介绍

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

程序员杂谈 353

使用Python下载ECMWF的ERA-5数据

一、注册账号 [官网]https://www.ecmwf.int/ 二、登录后获取下载key https://cds.climate.copernicus.eu/api-how-to 如图右侧红色框中的内容复制保存为TXT文件,并重命名为“.cdsapirc”,注意前面有点,保存在 C:\Users\username\.cdsapirc,(WINDOWS系统),username指当前电脑登录账户。 三、安装cdsapi库 以pycharm为例: 在pycharm中依次打开:File>setting

wise_sun的博客 7704

request,session作用域注入singleton

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

iteye_10254的博客 246

【智能机器人开发全流程:硬件选型、软件架构与ROS实战,打造高效机器人系统】

通过模块化设计与ROS框架的灵活扩展,可快速搭建适应不同场景的机器人系统。实际开发中需重点关注。

dally2的博客 6035

F28335 DSP ePWM模块实战:从基础配置到电机控制

本文详细解析了TI TMS320F28335 DSP的ePWM模块,从基础概念、寄存器配置到实战应用。通过代码示例,手把手教你如何配置定时中断、生成PWM波形、实现死区保护与故障联防,并最终完成一个可调速、可换向的直流电机控制项目,是掌握F28335电机控制核心技术的实战指南。

g5h6i的博客 1127

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

【一看就会】Autoware.universe的“规划”部分源码梳理【0】——Planning综述(持续更新中)

单独开一篇planning综述,作为整个规划系列的开篇。本篇综述会持续更新,希望能帮助大家更好的整体理解规划部分。这个部分会持续更新。

weixin_48386130的博客 1963

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

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

李阿昀的博客 7609

一分钟详解PCL中点云配准技术

原文首发于微信公众号「3D视觉工坊」: 一分钟详解PCL中点云配准技术 本文是对前两篇文章:点云配准(一 两两配准)以及3D点云(二 多福点云配准)的补充,希望可以在一定程度上帮助大家对点云配准理解地更为深刻。 一 PCL中点云配准技术的简单实现 在同一文件夹下,有测试数据文件monkey.ply,该文件是利用Blender创建的默认Monkey模型。 利用如下代码,将初始点云(图中绿色点云)...

3D视觉工坊 3704

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理中,解决了分割的问题之后,下面就是属性信息的提取。在这其中,有一种属性是非常重要的 ,那就是外界轮廓的边界点获取。这个边界点,可以用来计算长度,也可以用来进行直线、圆的拟合,具体的用途取决于现场的实际使用场景。目前qmacvisual支持对边界点的提取,相关控件可以直接用来提取边界点。

嵌入式-老费,一个分享专业嵌入式知识的blog 882

Session对象的特点

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

epm_kf6_10的博客 905

RK3568平台开发系列讲解(项目篇)手写数字识别

📢 本篇章带大家基于飞桨(PaddlePaddle),完成一个简单的手写数字识别任务。

内核笔记 1182

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

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

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

weixin_45791946的博客 573

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

mingtianhaiyouwo的博客 1287

efm32 入门.pdf

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

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、付费专栏及课程。

余额充值