session对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的操作状态。session对象内部使用 Map类 来保存数据,因此保存数据的格式为 key/value
。session对象的 value可以是复杂的对象类型,而不仅仅局限于字符串类型。
ObjectgetAttribute(String name)
获取指定名字的属性
EnumerationgetAttributeNames()
获取session中所有属性对象
longgetCreationTime()
获取session对象创建时间
StringgetId()
获取session对象唯一编号
longgetLastAccessedTime()
获取session对象最后一次被操作的时间
intgetMaxInactiveInterval()
获取session对象有效时间
booleanisNew()
判断session对象是否为新创建的
voidremoveAttribute(String name)
删除session对象中指定名称的属性
voidinvalidate()
销毁session对象
voidsetMaxInactiveInterval(int interval)
设置session对象的最大有效时间
voidsetAttribute(String key,Object obj)
将obj以key名称保存在session中
session是与请求有关的会话对象,是java.servlet.http.HttpSession对象,用于保存和存储页面的请求信息。
setAttribute()
方法可以实现将信息保存在session范围内,
setAttribute(String key,Object obj)
getAttribute()
方法可以获取保存在session范围内的信息。
getAttribute(String key)
session 默认在服务器上存储时间为30分钟,当客户端停止操作30分钟后,session中存储的信息会自动失效,此时调用 getAttribute()
等方法,将出现异常。
对于存储在session会话中的对象,如果想将其从session会话中移除,可以使用session对象的 removeAttribute()方法。
格式:
removeAttribute(String key)
例:将保存在session会话中的对象移除
session.removeAttribute("message");
当调用session对象的 invalidate()
方法后,表示session对象被删除,即不可以再使用 session对象。
格式:
session.invalidate();
注意:如果调用了session对象的 invalidate()方法,之后再调用session对象的任何其他地方时,都将报出Session already invalidate异常。
在应用session对象时应注意 session的生命周期。
一般,session的生命周期在 20~30 分钟。当用户首次访问时将产生一个新的会话,以后服务器就可以记住这个会话状态,当会话生命周期超时时,或者服务器端强制使会话失效时,这个session就不能使用了。
在开发系统时应该对session的有效性进行判断。
i.getLastAccessedTime()
:返回客户端最后一次与会话相关联的请求时间。
ii.getMaxInactiveInterval()
:以秒为单位返回一个会话内两个请求最大时间间隔。
iii.setMaxInactiveInterval()
:以秒为单位设置session 的有效时间。
例:通过 setMaxInactiveInterval()方法设置 session 有效时间为 10000 秒,超出这个范围 session 失效。
session.setMaxInactiveInterval(10000);
application对象可将信息保存在服务器中,直到服务器关闭,否则 application对象中保存的信息会在整个应用中都有效。
和session对象相比 application对象的生命周期更长,类似于系统的“全局变量”
ObjectgetAttribute(String name)
通过关键字返回保存在 application对象中的信息
EnumerationgetAttributeNames()
获取所有 application对象使用的属性名
voidsetAttribute(String key,Object obj)
通过指定名称将一个对象保存在 application对象中
intgetMajorVersion()
获取服务器支持的Servlet版本号
StringgetServletInfo()
返回JSP引擎的相关信息
voidremoveAttribute(String name)
删除 application对象中指定名称的属性
StringgetRealPath()
返回虚拟路径的真实路径
StringgetInitParameter(String name)
获取指定name的 application对象属性的初始值
application提供了对应程序环境属性访问的方法
通过初始化信息为程序提供连接数据库的目的,Tomcat使用 web.xml文件
application对象访问 应用程序初始化参数的方法分别介绍如下
getInitParameter(String name )
:返回一个已命名的参数值。getAttributeNames()
:返回所有已定义的应用程序初始化名称的枚举。例:访问应用程序初始化参数
(1)在web.xml文件中通过配置
<context-param>
<param-name>urlparam-name>
<param-value>jdbc:mysql://localhost:3306/db_database 15 param-value>
context-param>
<context-param>
<param-name>nameparam-name>
<param-value>rootparam-value>
context-param>
<context-param>
<param-name>passwordparam-name>
<param-value>rootparam-value>
context-param>
(2)在 index.jsp页面中 访问web.xml文件获取初始化参数
<%
String url = application.getInitParameter("url");//获取初始化参数 与 web.xml文件中内容相对应
String name = application.getInitParameter("name");
String password = application.getInitParameter("password");
out.println("URL:"+url+"
"); //将信息在页面中显示
out.println("name:"+name+"
");
out.println("password:"+password+"
");
%>
与session对象相同,也可以在 application对象中设置属性。
区别:
getAttributeNames()
:获取所有 application对象使用的属性名。getAttribute(String name)
:从 application对象中获取指定对象名。setAttribute(String key,Object obj )
:使用指定名称和指定对象在 application对象中进行关联。removeAttribute(String name)
:从 application对象中去掉指定名称的属性