JSP有九大内置对象:out对象、respond对象、session对象、application对象、exception对象、request对象、page对象、config对象、pageContext对象;四大作用域有:page、session、request、application。
out对象是JSP中使用最频繁的对象,它的作用是向客户端输出数据。同时,out对象还可以管理应用服务器上的输出缓冲区。总之,out对象就是输出流。
out对象方法:
out.print(type): 输出数据。把java原始对象的数据类型输入到客户端的缓冲区。
out.println(type): 输出带有换行符的数据。除了把内容输出到客户端,还在后面添加一个空行,但是这个空行在浏览器解析时被忽略。要想真正在页面中换行,需要通过out.println("<br>")来实现。out.newLine(): 输出一个换行符。
out.flush(): 输出缓冲区里的数据。
out.close(): 关闭输出流。
out.clearBuffer(): 清除缓冲区里的数据,并把数据输出到客户端。如果输出流已经flush,不会抛出错误。
out.getBufferSize(): 获取缓冲区的大小。缓冲区的大小可用<%@pqe buffer="size"%>设置。
out.getRemaining(): 活的缓冲区中没有被占用的大小。
out.isAutoFlush(): 返回布尔值,标志是否自动刷新。可用<%@page isAutoFlush()="true|false"%>来设置。
2、 request对象
request对象是HttpServletRequest的子类,主要用于接收客户端通过HTTP协议链接传输到服务器端的数据。当客户端请求JSP网页时,客户端的请求信息将被JSP引擎封装在request对象中,通过request对象调用相应的方法便可以获取用户提交的信息。
request对象方法:
String getMethod(): 得到提交方式,返回String类型。
String getRequestURI(): 得到请求的URL地址,返回String类型。
String getProtocol(): 得到协议名称,返回String类型。
String getServletPath(): 获得客户端请求服务器文件的路径,返回String类型。
String getQueryString(): 得到URL的查询部分,对于post方式来说,该方法得不到任何信息。返回String类型。
String getServerName(): 得到服务器的名称,返回String类型。
String getServerPort(): 得到服务器的端口号,返回String类型。
String getRemoteAddr(): 得到服务器的IP地址,返回String类型。
getAttribute(string): 返回由name指定的属性值,若指定的属性值不存在,则返回null。
getattributeNames(): 返回request对象所有属性的名字,结果集是Enumeration(枚举)类的实例。
getHeaderNames(): 返回所有请求标头(request header)的名字,结果集是Enumeration(枚举)类的实例。
getHeaders(String name): 返回指定名字的请求标头(request header)的所有值,结果集是Enumeration(枚举)类的实例。
getParameter(String name): 获得客户端传送给服务器端的参数值,该参数由name指定。
getParameterValues(String name): 获得参数name包含的值(一个或多个)。
setAttribute(string name,java.lang.Object object): 设置名为name的request参数的值。
removeAttribute(): 删除请求中的属性。
getCookies(): 返回客户端的所有Cookie对象,结果是Cookie数组。
getSession([Boolean create]): 返回和请求相关的session。create参数是可选的。
3、response对象
和request对象一样,response对象也是由服务器生成的,用于将服务器端数据发送到客户端以响应客户端的请求。
response对象的方法:
addHeader(String name,String value): 该方法将实现添加HTTP文件头。
containsHeader(String name): 该方法判断参数name所指名字的HTTP文件头是否存在,若存在返回true,否则返回false。
setContentType(String st): 该方法可以改变contentType属性的值。
encodeURL(): 使用sessionId封装URL。若没必要封装URL,返回原值。
sendRedirect(String url): 该方法将实现客户的重定向。
addCookie( Cookie c ookie): 该方法将实现添加一个 Cookie对象。
flushBuffer(): 强制把当前缓冲区的内容发送到客户端。
getBufferSize(): 返回缓冲区的大小。
sendError(int ernum): 该方法实现向客户端发送错误信息。
getOutputStream(): 返回客户端的输出流对象。
setHeader(String name ,String value): 该方法将根据HTTP文件头的名字来设定它的值。
4、session对象
session对象属于javax.servlet.Httpsession。session对象不仅可以保存信息,还提供了session失效时间、生成唯一的编号等功能。
session对象方法:
getId(): 每生成一个session对象,服务器都会给其分配独一无二的编号,该方法将返回当前session对象的编号。
getCreationTime(): 该方法实现返回创建session对象的时间,以毫秒为单位,从1970年1月1日期计数。
getLastAccessedTime(): 该方法实现返回当前session对象最后一次被操作的时间。
getAttribute(String name): 该方法从session对象中提取由参数name指定的对象。
getAttributeNames(): 该方法返回session对象中存储的第一个对象。
setAttribute(String key,Object obj): 该方法将参数obj指定的对象添加到session对象中,并为添加的对象指定索引关键字。索引关键字由参数key确定。
setMaxInactiveInterval(): 该方法将设置session对象的生存时间,单位为秒。
removeAttribute(String name): 该方法从session中删除由参数name指定的对象。
isNew(): 该方法判断是否是新用户。
5、application对象
application对象由服务器创建,也由服务器自动清除,不能由用户创建和清除。application对象由所有用户共同使用。
application对象的方法:
getAttribute(String name): 返回由参数name指定的、存放在application中的对象。
getAttributeNames(): 返回所有存放在application中的对象,结果集是Enumeration(枚举)类的实例。
getInitParameter(String name): 返回由参数name指定的application中某个属性的初始值。
getServerInfo(): 该方法获得Servlet的信息。
setAttribute(String name,Object obj): 该方法用来将参数obj指定的对象添加到application对象中,并为添加的对象指定一个关键字。该关键字由name指定。
6、exception对象
exception对象一般要和page指令一起配合使用,通过指定某个页面为错误处理页面,把JSP文件执行时所发生的错误和异常都集中到那个页面去进行处理。这不仅提高了系统的统一性,程序流程也变得更加简单清晰。
exception对象方法:
getMessage(): 该方法返回错误信息。
printStackTrace(): 该方法以标准错误的形式输出错误和错误的堆栈。
toString(): 该方法以字符串的形式返回对异常的描述。
7、page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例。
page对象方法:
getClass:返回此Object的类。
hashCode(): 返回此Object的hash码。
equals(Object obj): 判断此Object是否与指定的Object对象相等。
copy(Object obj): 把此Object拷贝到指定的Object对象中。
Object clone(): 克隆此Object对象。
toString(): 把此Object对象转换成String类的对象。
notify(): 唤醒一个等待的线程。
notifyAll(): 唤醒所有等待的线程。
wait(int timeout): 使一个线程处于等待直到timeout结束或被唤醒。
wait(): 使一个线程处于等待直到被唤醒。
enterMonitor(): 对Object加锁。
exitMonitor(): 对Object开锁。
8、config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)。
config对象方法:
ServletContext getServletContext():返回含有服务器相关信息的ServletContext对象。
String getInitParameter(String name):返回初始化参数的值。
Enumeration getInitParameterNames():返回Servlet初始化所需所有参数的枚举。
9、pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext。
pageContext对象方法:
getOut():返回当前客户端响应被使用的JspWriter流(out)。
getSession(): 返回当前页中的HttpSession对象(session)。
getPage(): 返回当前页的Object对象(page)。
getRequest(): 返回当前页的ServletRequest对象(request)。
getResponse(): 返回当前页的ServletResponse对象(response)。
getException(): 返回当前页的Exception对象(exception)。
getServletConfig():返回当前页的ServletConfig对象(config)。
getServletContext():返回当前页的ServletContext对象(application)。
setAttribute(String name,Object attribute):设置属性及属性值。
setAttribute(String name,Object obj,int scope):在指定范围内设置属性及属性值。
getAttribute(String name):取属性的值。
getAttribute(String name,int scope):在指定范围内取属性的值。
findAttribute(String name):寻找一属性,返回起属性值或NULL。
removeAttribute(String name):删除某属性。
removeAttribute(String name,int scope):在指定范围删除某属性。
getAttributeScope(String name):返回某属性的作用范围。
getAttributeNamesInScope(int scope):返回指定范围内可用的属性名枚举。
release(): 释放pageContext所占用的资源。
forward(String relativeUrlPath):使当前页面重导到另一页面。
include(String relativeUrlPath):在当前位置包含另一文件。
四大作用域:
1、如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。
2、如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。
3、如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。
4、如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。整个应用是指从应用启动,到应用结束。
session生命周期:
session的生命周期是session会话域。打开一个浏览器请求一个网站的页面后,Session开始,当session超过时间限制(一般是20分种)后,session注销而失效 或是人为使用session.invalidate();使用session失效; 或是关闭浏览器时,不会向服务器发送消息,这次回话关联的所有会话数据并不会马上被删除,直到该会话超时才会被删除。