asp中的session使用方法

asp中的session使用方法Session是什么呢?简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器

大家好,又见面了,我是你们的朋友全栈君。

Session是什么呢?简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。 当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这 个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串,我们会在下面的实验中见到它的实际样子。 

   这个唯一的SessionID是有很大的实际意义的。当一个用户提交了表单时,浏览器会将用户的SessionID自动附加在HTTP头信息中,(这是 浏览器的自动功能,用户不会察觉到),当服务器处理完这个表单后,将结果返回给SessionID所对应的用户。试想,如果没有SessionID,当有 两个用户同时进行注册时,服务器怎样才能知道到底是哪个用户提交了哪个表单呢。当然,SessionID还有很多其他的作用,我们会在后面提及到。

   除了SessionID,在每个Session中还包含很多其他信息。但是对于编写ASP或ASP.NET的程序与来说,最有用的还是可以通过访问 ASP/ASP.NET的内置Session对象,为每个用户存储各自的信息。例如我们想了解一下访问我们网站的用户浏览了几个页面,我们可能在用户可能 访问到每个的页面中加入:

  通过以下这句话可以让用户得知自己浏览了几个页面:

   可能有些有些读者会问:这个看似像是数组的Session(“..”)是哪里来的?需要我定义吗?实际上,这个Session对象是具有ASP解释能力 的的WWW服务器的内建对象。也就是说ASP的系统中已经给你定义好了这个对象,你只需要使用就行了。其中Session(“..”)中的..就好像变量 名称,Session(“..”)=$$中的$$就是变量的值了。你只需要写上句话,在这个用户的每个页面中都可以访问..变量中的值了。

  其实ASP一共内建了7个对象,有Session、Application、Cookie、Response、Request、Server等。在其他的服务器端脚本语言如JSP、PHP等中也有其类似的对象,只是叫法或者使用方法上不太一样。

ASP Session的功能的缺陷


  目前ASP的开发人员都正在使用Session这一强大的功能,但是在他们使用的过程中却发现了ASP Session有以下缺陷:

  进程依赖性:ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。

   Session状态使用范围的局限性:刚一个用户从一个网站访问到另外一个网站时,这些Session信息并不会随之迁移过去。例如:新浪网站的WWW 服务器可能不止一个,一个用户登录之后要去各个频道浏览,但是每个频道都在不同的服务器上,如果想在这些WWW服务器共享Session信息怎么办呢?

  Cookie的依赖性:实际上客户端的Session信息是存储与Cookie中的,如果客户端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。

  鉴于ASP Session的以上缺陷,微软的设计者们在设计开发 ASP.NET Session时进行了相应的改进,完全克服了以上缺陷,使得ASP.NET Session成为了一个更加强大的功能。

  HIbernate中的Session

  Session是JAVA应用程序和Hibernate进行交互时使用的主要接口,它也是持久化操作核心API,

  注意这里的Session的含义,它与传统意思上web层的HttpSession并没有关系,Hibernate Session之与Hibernate,相当于JDBC Connection相对与JDBC。

  Session对象是有生命周期的,它以Transaction对象的事务开始和结束边界

   Session作为贯穿Hibernate的持久化管理器核心,提供了众多的持久化的方法,如 save(), update ,delete ,find(Hibernate 3中已经取消了此方法)等,通过这些方法我们可以透明的完成对象的增删 改查(CRUD– create read update delete),这里所谓的透明是指,Session在读取,创建和删除影射的实体对象的实 例时,这一系列的操作将被转换为对数据库表中数据的增加,修改,查询和删除操作。

  Session有以下的特点

  1,不是线程安全的,应该避免多个线程共享同一个Session实例

  2,Session实例是轻量级的,所谓轻量级:是指他的创建和删除不需要消耗太多资源

  3,Session对象内部有一个缓存,被称为Hibernate第一缓存,他存放被当前工作单元中加载的对象,每个Session实例都有自己的缓存。

  org.hibernate Interface Session 

  public interface Session extends Serializable : 是一个Java application 和Hibernate之间主要的运行时接口,这是执行持久化服务的中心API

  主要方法:

  public Transaction beginTransaction() throws HibernateException:返回和当前Session对象相互联系的Transaction对象(表示在数据库中重新开始一个事务)

  public Transaction getTransaction():返回和当前session联系的Transaction对象

  public Connection connection close() throws HibernateExcepton:结束当前的Session对象

  public void clear() :清空Session,清除所有保存在当前Session缓存中的实体对象,终止所有正在执行的方法(eg: save() , update() ,delete() …..)

  public Serializable save(Object object)throws HibernateException 对当前参数指定的对象进行持久化(系统会首先赋予参数对象一个标识符OID),他相当于insert语句后面在详细介绍

  public Connection connection() throws HibernateException 得到当前Session 中包含的Connection对象。

  public boolean contains(Object object):判断参数给出的对象(持久化类)是否在当前Session的缓存中 

   public void evict(Object object) throws HibernateException :将参数给出的 Object从当前Session对象类中删除,使这个对象从持久态变成游离态,这种状态的改变不会引起对数据库的同步,后面详细介绍

    public Object load(Class theclass ,Serializable id) throws HibernateException 返 回第一个参数指定类对应的表中,第二个参数指定的行(第二个参数就是要取得对象的OID,他对应表中主键列的值)

  public void update(Object object) throws HibernateException :更新一个对象到数据库中,后面在详细介绍

  public void delete (Object object)throws HibernateException:从数据库中删除和参数指定的对象对应的记录

    public Object get(Class class,Serializable id) throws HibernateException: 和load()方法一样区别在于,如果数据库表中没有对应的记录,get()方法返回null,load()方法将报异常 

  Transanction 

   Transanction接口是Hibernate的数据库事务接口,用于管理事务,他对底层的事务作出了封装,用户可以使用Transanction 对象定义自己的对数据库的原子操作,底层事务包括:JDBC API ,JTA(Java Transaction API)。。。。。

  一个Transaction对象的事务可能会包括多个对数据库进行的操作

  org.hibernate Interface Transaction

  public interface Transaction 

  常用方法:

  public void commit() throws HibernateException 刷新当前的Session以及结束事务的工作,这个方法将迫使数据库对当前的事务进行提交

  public void rollback() throws HibernateException :强迫回滚当前事务 

  public boolean isActive() throws HibernateException: 这个事务是否存活

  —————————————————————————————-

  Session:当中包含一个Connection对象

  Connection c =session.getConnection(); 

  Session的缓存用于临时保存持久化的对象,等到一定时候,再将缓存中的对象保存到数据库中。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154606.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号