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