JSP内置对象是为了简化JSP页面开发而建立的一些内部对象。这些对象不需要声明,可以在程序中直接使用。它们是JSP语言的精髓,掌握常见内建对象的使用技巧是进行JavaWeb开发必不可少的。正确地掌握和灵活地使用JSP内置对象是学习JSP开发的重中之重。本章就来为大家讲解九大内置对象
内置对象主要方法
前五种方法最常用
内置对象 | 主要作用 |
---|---|
request | 包含客户端请求信息 |
response | 页面传回给用户端的相应信息 |
out | 用来向客户端浏览器输出信息的数据流 |
session | 为发送请求的客户建立会话 |
application | 保存整个应用程序的共享信息 |
pageContext | 保存当前JSP页面的共享信息 |
config | 读取初始化参数 |
page | 代表JSP网页本身 |
exception | 获取运行时的异常 |
request内置对象
request对象用来接收客户端提交的各种信息。如果要与用户的互动,必须要知道用户的需求,然后根据这个需求生成用户期望看到的结果。这样才能实现与用户的互动。在Web应用中,用户的需求就抽象成一个request对象,这个对象中间包括用户所有的请求数据,例如通过表单提交的表单数据等方式传递的参数,这些就是用户的需求。
主要方法
方法 | 方法描述 |
---|---|
getParameter(Sting name) | 获取客户端传给服务器的参数值,name指定表单中参数的名字 |
getParameterNames() | 获取客户端传给服务器的所有参数的名字,返回的结果是一个枚举实例 |
getParameterValues(Sting name) | 获得某一个参数的所有的值,name指定参数名字 |
getAttribute(Sting name) | 获得request对象中某一个属性的值,name为属性名,如果该属性不存在,则返回null |
setAttribute(Sting name,Java.long.Object.objt) | 给request对象设置一个名字为name的属性值,该值由objt设置 |
removeAttribute(String name) | 移除request对象中名字为name的属性 |
getAttributeNames() | 返回request对象中所有属性的名字,结果是一个枚举类型 |
getCookies() | 返回客户端所有的Cookie对象,结果是一个Cookie数组 |
getCharacterEncoding() | 返回客户端请求中字符的编码方式 |
getContentLength | 返回客户端请求的body的长度 |
getMethod() | 返回客户端向服务器传输数据的方法,如get、post、header、trace等 |
getRequestURL() | 获取发送请求的客户端地址 |
getRemoteAddr() | 获取客户端的IP地址 |
getServerName() | 获取服务器的名字 |
getServerPort() | 获取服务器的端口号 |
getServletPath() | 获取客户端所请求的脚本文件的文件路径 |
response内置对象
response对象是服务器端向客户端返回的数据,从这个对象中间可以取出一部分与服务器互动的数据和信息。
主要方法
方法 | 方法描述 |
---|---|
addCookie(Cookie cookie) | 添加一个Cookie对象,用来保存客户端信息 |
addHeader(Sting name, String value) | 添加HTTP文件头信息,如果已有同名的Header,则覆盖它 |
containHeader(String name) | 判断名字为name的HTTP文件头是否已存在 |
flushBuffer() | 强制将当前缓冲区的内容发送到客户端 |
getBufferSize() | 返回缓冲区的大小 |
getOutputStream() | 获取到客户端的输出流对象 |
sendError(int) | 向客户端发送错误信息 |
sendRedirect(String location) | 发响应发送到另一个位置去处理 |
setContentType(Sting contentType) | 设置响应的MIME类型 |
setHeader(String name, String value) | 设置名字为name的HTTP文件头的值,新设置的值可以覆盖旧值 |
forward和sendRedirect的区别
<jsp:forward> | sendRedirect |
---|---|
jsp引擎控制,url不会变 | 完全跳转 |
url必须是相对路径 | 合法的url就行 |
转向页面和到达页面需要在同一个app中 | 只要合法,随便跳转 |
动态设置页面返回的MIME类型
在JSP中可以使用page编译指令来设置页面的MIME(Multipurpose Internet Mail Extensions多功能Internet邮件扩充服务,即文件的类型)返回类型,但是在这里设置是页面的编译阶段,以电脑设置完成,在运行阶段是不可更改的。而使用response对象中的setContentType(String type)方法可以来动态设置页面的返回类型。
out内置对象
out内置对象是在Web应用开发过程中使用最多的一个对象,其功能就是动态的向JSP页面输出字符流,从而把动态的内容转化成HTML形式来展示。这个对象在任何JSP页面中都可以任意访问。out对象的方法主要用于输出各种各样格式的数据
主要方法
方法 | 方法描述 |
---|---|
clear() | 清除缓冲区的数据,不向用户输出 |
clearBuffer() | 清除缓冲区的数据,同时把这些数据向用户输出 |
close() | 关闭out输出流 |
flush() | 输出缓冲区的内容 |
isAutoFlush() | 判断是否为自动刷新 |
print(String str) | 输出带HTML格式的各种类型的数据,下一个输出语句不换行 |
println(String str) | 输出带HTML格式的各种类型的数据,下一个输出语句换行 |
在out对象方法中,最常用的就是print()和println()方法。我们可以运用这两种方法实现各种类型数据的输出。
session内置对象
session对象用来保存每个用户的信息。例如:用户名、密码、上次访问时间等,从而可以跟踪每个用户的操作状态。一般情况下,当用户首次登录系统时,Web容器就会给该用户创建一个唯一用来标识该用户会话的session id。为了跟踪用户的操作状态,在多个页面之间保存共享信息,JSP中提供了session对象。当该用户退出系统时,这个session自动消失。
主要方法
方法 | 方法描述 |
---|---|
getAttribute(String name) | 从session中获取名字为name的属性 |
getAttributeNames() | 返回存储在session对象中的所有属性的名字,结果为一个枚举类型 |
removeAttribute(String name) | 删除名字为name的属性 |
setAttribute(String name, Java.lang.Object value) | 设置一个名字为name的属性,其值为value |
getCreationTimes() | 返回该session被创建的时间 |
getId() | 返回唯一标识该session的ID |
getLastAccessedTime() | 返回与该session相关的客户端最后发送请求的时间 |
获取session的ID
session对象的ID是用来唯一识别session的标识。该ID由一个32位的十六进制字符串组成,可以保证服务器中所创建的所有session对象都不相同。
session中保存和读取共享数据
与request对象一样,session对象也有一对setAttribute()和getAttribute()方法,用来存储或者读取session中的共享信息。而两种对象的两个方法的区别在于共享信息的范围不同,session对象中保存的共享信息的范围是整个会话过程,而request对象中保存共享信息的范围则是提交和被提交的页面。
session对象的生命周期
session对象的创建是由服务器完成的,当客户端第一次请求服务器时由服务器创建。如果会话过程一直存在,则session对象也将一直存在下去。只有当session过期、客户端关闭浏览器或者服务器端调用了session的invalIDate()方法时session对象才被释放掉,结束其生命周期。
application内置对象
application对象保存着整个Web应用运行期间的全局数据和信息。从Web应用开始运行开始,这个对象就会被创建。在整个Web应用运行期间可以在任何JSP页面中访问这个对象。所以如果要保存在整个Web应用运行期间都可以访问的数据,这时候就要用到application对象。
主要方法
方法 | 方法描述 |
---|---|
getAttribute(String name) | 返回application对象中名字为name的属性的值 |
getAttributeNames() | 返回application对象中所有属性的名字,结果为一个枚举类型 |
getInitParameter(String name) | 返回application对象中名字为name的属性的初始值 |
getServletInfo() | 返回Servlet编译器的当前版本的信息 |
setAttribute(String name,Object object) | 在application对象中设置一个名字为name的属性,其值为object |
application对象最常用的方法回是getAttribute()和set Attribute()方法。
pageContext内置对象
pageContext对象又被称为JSP作用域通信对象。该对象提供了访问其他内置对象的统一入口,使用户可以方便地访问页面作用域中定义的所有内置对象。
主要方法
方法 | 方法描述 |
---|---|
getRequest() | 返回当前页面的request对象 |
getResponse() | 返回当前页面的response对象 |
getServletConfig() | 返回当前页面的servletConfig对象 |
getServletContext() | 返回当前页面的ServletContext对象,这个对象是所有的页面共享的 |
getSession() | 返回当前页面的session对象 |
setAttribute() | 设置默认页面范围或特定对象范围之中的的对象 |
removeAttribute() | 删除默认页面对象或特定对象范围之中的已命名对象 |
config内置对象
config对象代表当前JSP页面的配置信息。但JSP页面通常无须预先进行配置,也就不存在配置信息了。因此该对象在JSP页面中比较少用,但在Servlet中则用处相对较大,因为Servlet需要在web.xml文件中进行配置,从而设置初始化配置参数。
主要方法
方法 | 方法描述 |
---|---|
getInitParameter(String name) | 返回String类型的初始化参数 |
getInitParameterNames(String name) | 返回所有初始化参数的名称 |
getServletName() | 获得当前JSP页面名称 |
getServletContext() | 获得当前JSP页面的服务器上下文环境 |
exception内置对象
exception对象用来封装运行时出现的异常信息。该对象只能被处理错误的页面使用,一般用来处理错误的页面会在其页面指令中声明“isErrorPage=true”。
主要方法
方法 | 方法描述 |
---|---|
getMessage() | 返回描述异常的消息 |
toString() | 返回关于异常的简短描述消息 |
printStackTrace() | 显示异常及其栈中的跟踪信息 |
page内置对象
page内置对象指向当前JSP页面本身,有点类似于类中的this指针,它表示当前JSP页面转换后生成的Servlet类的实例。
主要方法
方法 | 方法描述 |
---|---|
getClass() | 返回当前Object的类 |
toString() | 返回当前Object对象的字符串 |
hashCode() | 返回当前Object的哈希代码 |
equals(Object o) | 比较当前对象与给定的对象是否相等 |
copy(Object o) | 把当前对象赋值到给定的对象中去 |
clone() | 对当前对象进行克隆操作 |