接着上篇博文,小编将继续介绍JSP的内置对象。
一、9大内置对象
二、详细用法
4.session
session在网络应用中,称为“会话控制”。session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 session 对象中的变量将不会丢失。
4.1 创建及获取客户的会话
session.setAttribute(String name,Object obj); //将信息保存在session范围内
session.getAttribute(String name); //获取保存在session范围内的信息
4.2 从会话中移除指定的对象
session.removeAttribute(String name); //指定销毁session中的某个属性
4.3 设置session的有效时间
当用户访问网站时,会产生一个新的会话,用以记录用户的状态。如果一个会话中,客户端长时间不向服务器发出请求,这个会话将被自动销毁。这个时间可以通过session来设置,tomcat服务器默认为30分钟。
session.setMaxInactiveInterval(int time); //设置session的有效期,time的单位为秒
4.4 销毁session
虽然当客户端长时间不向服务器发送请求后,session会自动消失,但是对于一些需要实时监测人数的需求,就需要我们来手动销毁session。
session.invalidate(); //清除当前session的所有相关信息
5.application
application对象用于保存所有应用程序中的公有数据。在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象,它类似于系统的“全局变量”。它常用于实现网页计数器或者聊天室。
5.1 访问应用程序初始化参数
Application对象提供了访问应用程序初始化参数的方法,该参数在web.xml文件(位于Web应用所在目录下的WEB-INF子目录)中设置,在该文件中通过context-param标记配置应用程序初始化参数。
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://127.0.0.1:3306/db_database</param-value>
</context-param>
5.2 应用程序环境属性管理
application.setAttribute(String name,Object obj); //保存应用程序环境属性
application.getAttributeName(); //获取所有application对象使用的属性名
application.getAttribute(String name); //获取指定属性的属性值
application.removeAttribute(String name); //去掉指定名称的属性
6.pageContext
pageContext对象可以获取JSP页面的request、response、session、application、exception等对象。pageContext对象的创建和初始化都是由容器来完成的,JSP页面中可以直接使用pageContext对象。
常用方法如下:
方法 | 说明 |
---|---|
forward(java.lang.String relativeUtlpath) | 把页面转发到另一个页面 |
getAttribute(String name) | 获取参数值 |
getAttributeNamesInScope(int scope) | 获取某范围的参数名称的集合,返回值为java.util.Enumeration对象 |
getException() | 返回exception对象 |
getRequest() | 返回request对象 |
getResponse() | 返回response对象 |
getSession() | 返回session对象 |
getOut() | 返回out对象 |
getApplication() | 返回application对象 |
setAttribute() | 为指定范围内的属性设置属性值 |
removeAttribute() | 删除指定范围内的指定属性 |
7.page
page对象代表JSP本身,只在JSP页面内才是合法的。该对象本质上包含当前Servlet接口引用的变量,可以看做是this关键字的别名。
常用方法如下:
方法 | 说明 |
---|---|
getClass() | 返回当前Object的类 |
hashCode() | 返回该Object的哈希代码 |
toString() | 把该Object类转换为字符串 |
equals(Object o) | 比较该对象和指定的对象是否相等 |
8.config
Config对象主要用于获取服务器的配置信息。当一个Servle初始化t时,容器把某些信息通过config对象传递给Servlet。开发者可以在web.xml文件中为应用程序环境中的servlet程序和JSP页面提供初始化参数。
常用方法如下:
方法 | 说明 |
---|---|
getServletContext() | 获取Servlet上下文 |
getServletName() | 获取Servlet服务器名 |
getInitParameter() | 获取服务器所有初始参数名称,返回值为java.util.Enumeration对象 |
getInitParameterNames() | 获取服务器中name参数的初始值 |
9.exception
exception对象用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置isErrorPage属性值为true的页面才可以被使用。
在JAVA程序中,可以用try…catch关键字来处理异常情况,如果在JSP页面出现没有捕捉到的异常,这会生成exception对象,并将其传送在page指令中设置的错误页面中,然后在错误页面中处理相应的exception对象。
常用方法如下:
方法 | 说明 |
---|---|
getMessage() | 返回exception对象的异常信息字符串 |
getLocalizedmessage() | 返回本地化的异常错误 |
toString() | 返回关于异常错误的简单信息描述 |
fillInStackTrace() | 重写异常错误的栈执行轨迹 |
三、session vs cookie
session | cookie | |
---|---|---|
保存位置 | 服务器端 | 客户端 |
保存内容 | 重要信息 | 其他信息 |
大小限制 | 无 | 有 |
安全性 | 高 | 低(信息完全可见;易于本地编辑) |
生命周期 | 访问session的间隔时间(tomcat中的默认失效时间为30分钟) | 会话cookie:和浏览器一致 持久化cookie:存储在客户端硬盘 |
访问范围 | 单个浏览器独享 | 多个浏览器共享 |
网络传输量 | 不会给客户端 | 会传递信息给服务器 |
缺点 | session保存在服务器端一段时间才会消失,如果session过多会增加服务器的压力 | 有安全隐患 |