session的相关介绍总结
2011-12-29 17:22
127 查看
在JSP中
Jsp的session是使用bean的一个生存期限,一般为page,session意思是在这个用户没有离开网站之前一直有效,如果无法判断用户何时离开,一般依据系统设定,tomcat中设定为30分钟. 我们使用session功能,可以达到多个jsp程序从操作同一个java bean,那么这个java bean可以作为我们传统意义上的"全局变量池".(在java中我们可以使用static静态化一个变量和方法,使用singleton唯一化对象.) 在项目实践中,我们Jsp程序中很多参数需要从数据库中读取,有的参数实际读取一次就可以,如果设计成每个用户每产生一个页面都要读取数据库,很显然,数据库的负载很大,同时也浪费时间,虽然可能有数据库连接池优化,但是尽量少使用数据库是我们编程的原则.
JSP使用一个叫HttpSession的对象实现同样的功能。HTTPSession 是一个建立在cookies 和URL-rewriting上的高质量的界面。Session的信息保存在服务器端,Session的id保存在客户机的cookie中。事实上,在许多服务器上,如果浏览器支持的话它们就使用cookies,但是如果不支持或废除了的话就自动转化为URL-rewriting,session自动为每个流程提供了方便地存储信息的方法。 Httpsession具有如下API: getId 此方法返回唯一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当作键名用。
GetCreationTime 返回session被创建的时间。最小单位为千分之一秒。为得到一个对打印输出很有用的值,可将此值传给Date constructor 或者GregorianCalendar的方法setTimeInMillis. GetLastAccessedTime 返回session最后被客户发送的时间。最小单位为千分之一秒。 GetMaxInactiveInterval 返回总时间(秒),负值表示session永远不会超时。 getAttribute 取一个session相联系的信息。(在jsp1.0中为
getValue) Integer item = (Integer) session.getAttribute("item") //检索出session的值并转化为整型 setAttribute 提供一个关键词和一个值。会替换掉任何以前的值。(在jsp1.0中为putValue) session.setAttribute("ItemValue", itemName); // ItemValue 必须不是must简单类型 在应用中使用最多的是getAttribute和setAttribute.现以一个简单的例子来说明session的应用,test1.jsp(信息写入session),test2.jsp(从session读出信息)。
test1.jsp <HTML> <HEAD> <TITLE> Document </TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <% session.setAttribute("str",new String(“this is test”)); %> </BODY> </HTML> test2.jsp <HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY
BGCOLOR="#FFFFFF"> <% String ls_str=null; ls_str=(String)session.getAttribute("str"); out.println(“从session里取出的值为:”+ls_str); %> </BODY> </HTML>
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在读取,创建和删除影射的实体对象的实例时,这一系列的操作将被转换为对数据库表中数据的增加,修改,查询和删除操作。
2,Session实例是轻量级的,所谓轻量级:是指他的创建和删除不需要消耗太多资源
3,Session对象内部有一个缓存,被称为Hibernate第一缓存,他存放被当前工作单元中加载的对象,每个Session实例都有自己的缓存。
主要方法:
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()方法将报异常
一个Transaction对象的事务可能会包括多个对数据库进行的操作
org.hibernate Interface Transaction
public interface Transaction
public void rollback() throws HibernateException :强迫回滚当前事务
public boolean isActive() throws HibernateException:这个事务是否存活
----------------------------------------------------------------------------------------
Session:当中包含一个Connection对象
Connection c =session.getConnection();
Session的缓存用于临时保存持久化的对象,等到一定时候,再将缓存中的对象保存到数据库中。
应用程序事务:如果一个Session中包含有多个Transaction(数据库事务),这些Transaction的集合称为应用程序事务
标准使用形式:
Configuration config=new Configuration().configure("hibernate.cfg.xml");
SessionFactory sessionfactory=config.buildSessionFactory();
Session session=sessionfactory.openSession();
Transaction tx=session.beginTransaction();
try
{
session.save();
tx.commit();
}
catch(Exception e)
{
if(tx!=null) tx.rollback();
}
finally
{
session.close ();
}
Jsp的session是使用bean的一个生存期限,一般为page,session意思是在这个用户没有离开网站之前一直有效,如果无法判断用户何时离开,一般依据系统设定,tomcat中设定为30分钟. 我们使用session功能,可以达到多个jsp程序从操作同一个java bean,那么这个java bean可以作为我们传统意义上的"全局变量池".(在java中我们可以使用static静态化一个变量和方法,使用singleton唯一化对象.) 在项目实践中,我们Jsp程序中很多参数需要从数据库中读取,有的参数实际读取一次就可以,如果设计成每个用户每产生一个页面都要读取数据库,很显然,数据库的负载很大,同时也浪费时间,虽然可能有数据库连接池优化,但是尽量少使用数据库是我们编程的原则.
JSP使用一个叫HttpSession的对象实现同样的功能。HTTPSession 是一个建立在cookies 和URL-rewriting上的高质量的界面。Session的信息保存在服务器端,Session的id保存在客户机的cookie中。事实上,在许多服务器上,如果浏览器支持的话它们就使用cookies,但是如果不支持或废除了的话就自动转化为URL-rewriting,session自动为每个流程提供了方便地存储信息的方法。 Httpsession具有如下API: getId 此方法返回唯一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当作键名用。
GetCreationTime 返回session被创建的时间。最小单位为千分之一秒。为得到一个对打印输出很有用的值,可将此值传给Date constructor 或者GregorianCalendar的方法setTimeInMillis. GetLastAccessedTime 返回session最后被客户发送的时间。最小单位为千分之一秒。 GetMaxInactiveInterval 返回总时间(秒),负值表示session永远不会超时。 getAttribute 取一个session相联系的信息。(在jsp1.0中为
getValue) Integer item = (Integer) session.getAttribute("item") //检索出session的值并转化为整型 setAttribute 提供一个关键词和一个值。会替换掉任何以前的值。(在jsp1.0中为putValue) session.setAttribute("ItemValue", itemName); // ItemValue 必须不是must简单类型 在应用中使用最多的是getAttribute和setAttribute.现以一个简单的例子来说明session的应用,test1.jsp(信息写入session),test2.jsp(从session读出信息)。
test1.jsp <HTML> <HEAD> <TITLE> Document </TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <% session.setAttribute("str",new String(“this is test”)); %> </BODY> </HTML> test2.jsp <HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY
BGCOLOR="#FFFFFF"> <% String ls_str=null; ls_str=(String)session.getAttribute("str"); out.println(“从session里取出的值为:”+ls_str); %> </BODY> </HTML>
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()方法将报异常
Transaction
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的缓存用于临时保存持久化的对象,等到一定时候,再将缓存中的对象保存到数据库中。
应用程序事务:如果一个Session中包含有多个Transaction(数据库事务),这些Transaction的集合称为应用程序事务
标准使用形式:
Configuration config=new Configuration().configure("hibernate.cfg.xml");
SessionFactory sessionfactory=config.buildSessionFactory();
Session session=sessionfactory.openSession();
Transaction tx=session.beginTransaction();
try
{
session.save();
tx.commit();
}
catch(Exception e)
{
if(tx!=null) tx.rollback();
}
finally
{
session.close ();
}
相关文章推荐
- VNC介绍及相关命令总结
- WebService学习总结(二)——WebService相关概念介绍
- sessiond的简单介绍与相关用法
- WebService学习总结——WebService相关概念介绍
- session有效期配置 相关介绍(下)
- API相关工作的个人总结_Sandcastle简要使用介绍
- Hadoop学习总结(1)——大数据以及Hadoop相关概念介绍
- [置顶] API相关工作过往的总结之Sandcastle简要使用介绍
- API相关工作过往的总结之Sandcastle简要使用介绍
- WebService学习总结(二)——WebService相关概念介绍
- Hadoop学习总结(1)——大数据以及Hadoop相关概念介绍
- Hadoop学习总结(1)——大数据以及Hadoop相关概念介绍
- ApacheOFBiz的相关介绍以及使用总结(一)
- ApacheOFBiz的相关介绍以及使用总结(二)
- WebService学习总结(二)——WebService相关概念介绍
- ApacheOFBiz的相关介绍以及使用总结(三)
- 电商用户行为分析大数据平台相关系列9-用户访问session的模块介绍
- WebService学习总结(二)——WebService相关概念介绍
- WebService学习总结(二)——WebService相关概念介绍
- 网易上关于wifi产品的相关介绍总结