1、application对象
这几个对象真的在我眼里长得差不多,对象的方法没什么大差别。这次要求超级简单,我都没发现有什么需要自己写的。(还是熟悉一下定义好了)
1.1 基本概念application
对象用于保存所有应用程序中的公有数据。
服务器启动并且自动创建application对象后,只要没有关闭服务器,application对象就一直存在,所有用户可以共享application对象。(application的信息是应用层面的,对比起session就很明显啦)
通过application对象可以:1访问应用程序初始化参数、2管理应用程序环境属性。
1.2 对比session
session对象和用户会话相关,不同用户的session是完全不同的对象。
用户的application对象都是相同的一个对象,即共享这个内置的application对象。
1.3 用法
1、访问应用程序初始化参数
通过对象调用ServletContext对象来访问程序环境属性。
Tomcat使用web.xml文件,一般位于程序环境目录下的WEB-INF子目录中。(参数文件)
访问参数的方法
方法 | 说明 |
---|---|
getInitParameter(String name) | 返回一个已命名的初始化参数的值 |
getInitParameterNames() | 返回所有已定义的程序初始化参数名称的枚举数据 |
1.4 实例:
(1)在web.xml中添加参数名称和参数值context-name、context-value
标签
(2)在主要jsp文件中访问输出参数名称和值。添加泛型这个事情我不想再说了,再见
2、管理程序环境属性
可以在application对象中设置属性。
在application对象中设置的属性在整个程序范围内有效;即使所有的用户都不发送请求,只要不关闭服务器,在其中设置的属性仍然是有效的。
管理属性的方法
方法 | 说明 |
---|---|
removeAttribute(String name) | 从ServletContext的对象中去掉指定名称的属性 |
setAttribute(String name, Object object) | 使用指定名称和指定对象在ServletContext的对象中进行关联 |
getAttribute(String name) | 从ServletContext的对象中获取一个指定对象 |
getAttributeNames() | 返回存储在ServletContext对象中属性名称的枚举数据 |
实例:直接在主要jsp文件中使用方法获取属性
继续内置对象的概念学习
2、out对象
2.1 基本概念out
对象主要用来向客户端输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区,缓冲区默认值一般为8KB,可以通过页面指令page来改变默认值。
在使用out对象输出数据是,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕之后,要及时关闭输出流。
out对象被封装为javax.servlet.jsp.JspWriter类的对象,在实际应用上out对象会通过JSP容器变换为java.io.PrintWriter类的对象。
2.2 操作方法
方法 | 说明 |
---|---|
clear() | 清空缓冲区 |
clearBuffer() | 清空当前区的内容 |
close() | 先刷新流(输出),然后关闭流 |
flush() | 刷新流 |
getBufferSize() | 以字节为单位返回缓冲区的大小 |
getRemaining() | 返回缓冲区没有使用的字符数量? |
isAutoFlush() | 返回布尔值,自动刷新还是在缓冲区溢出时抛出IOException异常 |
调用clear()方法清除缓冲区的内容;类似于重置响应流,以便重新开始操作。
如果响应已经提交,则会产生IOException异常的副作用??
2.3 实例
还有一个重要功能就是向客户写入内容
- 由于JspWriter是由java.io.Writer派生而来,因此用法与其相似。
3、其他对象
不常使用
3.1 pageContext对象
3.1.1 要义(获取会话范围)
页面中所有其他对象功能的最大集成者,通过它可以访问到本页中所有其他对象。
pageContext对象被封装成javax.servlet.pageContext接口,主要用于管理对属于JSP中特殊部分中已经命名对象的访问,创建和初始化都由容器来完成。
在页面中可以直接使用pageContext对象的句柄,pageContext对象的getXxx()、setXxx()和findXxx()方法可以用来根据不同的对象范围实现对这些对象的管理。
3.1.2 方法(看了第一个,怪不得不常用)
方法 | 说明 |
---|---|
forward(java.lang.String relativeUtlpath) | 把页面转发到另一个页面或者servlet组件上 |
getAttribute(java.lang.String name[,int scope]) | scope参数是可选的,该方法用来检索一个特定的已经命名的对象的范围,并且可以通过调用getAttributeNameInScope()方法,检索对某个特定范围的每个属性String字符串名称枚举(范围内的所有属性名) |
getException() | 返回当前的Exception对象 |
getRequest() | 返回当前的request对象 |
getResponse() | 返回当前的response对象 |
getServletConfig() | 返回当前的ServletConfig对象 |
invalidate() | 返回ServletConfig对象,全部销毁 |
setAttribute() | 设置默认页面范围或特定对象范围之中的已命名对象 |
removeAttribute() | 删除默认页面范围或特定对象范围之中的已命名对象 |
和findXxx()方法可以用来根据不同的对象范围实现对这些对象的管理。
3.1.3 使用
3.2 config对象
3.2.1 要义(读取web.xml配置信息)
config对象被封装成javax.servlet.ServletConfig接口,它表示Serlvet的配置,当一个Servlet初始化时,容器把某些信息通过该对象传递给这个Servlet。
可以在web.xml中为程序环境中的Servlet程序和JSP页面提供初始化参数。
3.2.2 方法
方法 | 说明 |
---|---|
getServletConfig() | 返回执行者的Servlet上下文 |
getServletName() | 返回Servlet名字 |
getInitParameter(String name) | 返回名字为name的初始参数的值 |
getInitParameterNames() | 返回这个JSP所有初始参数的名称 |
3.2.3 使用
3.3 page对象
3.3.1 要义(应答或请求)
page对象是为了执行当前页面应答请求而设置的Servlet类的实体,即显示JSP页面自身,只有在JSP页面内才是合法的。
page隐含对象本质上包含当前Servlet接口引用的变量,可以看作是this变量的别名。
3.3.2 方法
方法 | 说明 |
---|---|
getClass() | 返回当前Object的类 |
hasCode() | 返回此Object的哈希代码 |
toString() | 将此Object类转换为字符串 |
equals(Object o) | 比较此对象和指定对象是否相等 |
copy(Object o) | 把该对象赋值到指定的对象中去 |
clone() | 对该对象进行克隆 |
3.4 exception对象
3.4.1 要义(获取异常信息)
用来处理JSP文件执行时发生的所有错误和异常。
使用 “try/catch” 关键字来处理异常情况。
如果在JSP页面中出现没有 捕捉到的异常, 就会生成exception对象;并把这个exception对象传送到page指令中设定的错误页面中(errorPage属性),然后在错误提示页面中处理相应的exception对象。
exception对象只有在错误页面(页面指令中有属性语句:isErrorPage=true的页面)才可以使用。
3.4.2 方法
方法 | 说明 |
---|---|
getClass() | 返回当前Object的类 |
hasCode() | 返回此Object的哈希代码 |
toString() | 将此Object类转换为字符串 |
equals(Object o) | 比较此对象和指定对象是否相等 |
copy(Object o) | 把该对象赋值到指定的对象中去 |
clone() | 对该对象进行克隆 |
3.4.3 使用