JSP内置对象—session&application

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> 
<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+"
"
); %>

3.管理应用程序环境属性

与session对象相同,也可以在 application对象中设置属性。
区别:

  • session只是在当前客户的会话范围内有效,当超过保存时间,session对象就收回
  • application对象在整个应用区域中都有效。
application对象管理应用程序环境属性方法:
  • getAttributeNames():获取所有 application对象使用的属性名。
  • getAttribute(String name):从 application对象中获取指定对象名。
  • setAttribute(String key,Object obj ):使用指定名称和指定对象在 application对象中进行关联。
  • removeAttribute(String name):从 application对象中去掉指定名称的属性

你可能感兴趣的:(JavaWeb,JSP内置对象)