1. Out
out对象被封装成javax.servlet.jsp.JspWriter接口。它表示为客户打开的输出流,PrintWriter使用它向客户端发送输出流。简单地说,它主要用来向客户端输出数据,代表输出流的对象。
out对象的主要方法有:
- out.print(boolean)、out.println(boolean)输出Boolean类型的数据
- out.print(char)、out.println(char)输出Char类型的数据
- out.print(char[])、out.println(char[]) 输出Char[]类型的数据
- out.print(double)、out.println(double)输出Double类型的数据
- out.print(float)、out.println(float)输出Float类型的数据
- out.print(int)、out.println(int)输出Int类型的数据
- out.print(long)、out.println(long)输出Long类型的数据
- out.print(Object)、out.println(Object)输出Object类型的数据
- out.print(String)、out.println(String)输出String类型的数据
- out.newLine() 输出一个换行字符
- out.flush() 输出缓冲区里的数据
- out.close() 关闭输出流
- out.clearBuffer() 清除缓冲区里的数据,并把数据输出到客户端
- out.clear() 清除缓冲区里的数据,但不会吧数据输出到客户端
- out.getBufferSize()获得缓冲区的大小
- out.getRemaining() 获得缓冲区中没有被占用的空间的大小
- out.isAutoFlush() 返回布尔值。如果AutoFlush为真,则返回true
Out对象是JSP中使用最频繁的对象,它的print()和println()方法使用更加常见。print()方法就是把Java对象原始数据类型输入到客户端的缓冲区,而println()方法除了把内容输出到客户端外,还在后面添加一个空行。但是这个空行被浏览器解析时忽略。要想真正在页面中换行,需要通过out.println("<br>")方法来实现。
2.request
request对象代表请求对象,它被包装成HttpServletRequest接口。通过getParameter方法可以得到request的参数,通过GET、POST、HEAD等方法可以得到request的类型,通过Cookies、Referer等可以得到请求的HTTP头。
来自客户端的请求经Servlet容器处理后,由request对象进行封装。它作为jspService()方法的一个参数由容器传递给JSP页面。
request对象的主要方法有:
- isUserInRole(String role) 判断认证后的用户是否属于逻辑的role中的成员
- getAttribute(String name)返回由name指定的属性值,如果指定的属性值不存在,则返回一个null值
- getAttributeNames()返回request对象的所有属性的名字集合,其结果是一个枚举的实例
- getCookies() 返回客户端的所有cookie对象,结果是一个Cookie数组
- getCharacterEncoding()返回请求中的字符编码方式
- getContentLength() 返回请求的Body的长度,如果不确实长度,返回-1
- getHeader(String name)获得HTTP协议定义的文件头信息
- getHeaders(String name)返回指定名字的request Header的所有值,其结果是一个枚举的实例
- getHeaderName() 返回所有request Header的名字,其结果是一个枚举的实例
- getInputStream() 返回请求的输入流,用于获得请求中的数据。
- getMethod() 获得客户端向服务器端传送数据的方法
- getParameter(String name)获得客户端传送给服务器的参数值,该参数是由name指定的,通常是表单中的参数
- getParameterNames()获得客户端传送给服务器端的所有参数的名字,其结果是一个枚举的实例
- getParameterValues(String name)获得指定参数的所有值,参数由name指定。
- getProtocol()获取客户端向服务器端传送数据所依据的协议名称
- getQueryString() 获得查询字符串,该字符串是由客户端以GET方法向服务器端传送的。
- getRequestURI() 获取发出请求字符串的客户端地址
- getRemoteAddr() 获取客户端的IP地址
- getRemoteHost() 获取客户端的名字
- getSession([Boolean create]) 返回和请求相关的session。create参数是可选的。当有参数create且这个参数的值为true时,如果客户端还没有创建session,那么将创建一个新的session
- getServerName() 获取服务器的名字
- getServletPath() 获取客户端所请求的脚本文件的文件路径
- getServerPort() 获取服务器的端口号
- removeAttribute(String name)删除请求中的一个属性
- setAttribute(String name,java.lang.Object objt)设置名字为name的request参数的值,该值是由java.lang.Object类型的objt指定的。
3. response
response被包装成HttpServletResponse接口,它封装了JSP产生的响应,然后被发送到客户端以响应客户的请求。和request对象一样,它由容器生成,作为jspService()方法的参数被传入JSP。因为输出流式缓冲的,所以可以设置HTTP状态码和response头。
response对象的主要方法:
- addCookie(Cookie cook) 添加一个Cookie对象,用来保存客户端的用户信息。
- addHeader(String name,String value)添加HTTP文件头信息。该Header将传到客户端,如果已经存在同名的Header,则将会覆盖已有的Header。
- containsHeader(String name) 判断指定名字的HTTP文件头是否已经存在,然后返回真假布尔值。
- encodeURL() 使用sessionId封装URL,如果没有必须封装URL,则返回原值。
- flushBuffer() 强制把当前缓冲区的内容发送到客户端
- getBufferSize() 返回缓冲区的大小
- getOutputStream() 返回客户端的输出流对象
- sendError (int) 向客户端发送错误的信息
- sendRedirect(String location)把响应发送到另一个位置进行处理
- setContentType(String contentType)设置相应的MIME类型
- setHeader(String name,String value)设置指定名字的HTTP文件头的值,如果该值已经存在,则新值会覆盖原有的旧值。
4. Session
session对象用来保存每个用户信息,以便跟踪每个用户的操作状态。其中,session信息保存在容器里,session的ID保存在客户机的Cookie中。在许多服务器上,如果浏览器支持Cookie的话,就直接
使用Cookie。但是如果不支持或废除了Cookie的话,就自动转化为URL-rewriting,session自动为每个流程提供了方便的存储信息的方法。
在一般情况下,用户首次登陆系统时容器会给此用户分配一个唯一标识的session id,这个ID用于区分其他的用户。当用户退出系统时,这个session就好自动消失。和session对应的是HttpSession接口。
session对象的主要方法有:
- getAttribute(String name) 获取与指定名字name相联系的属性
- getAttributeNames()返回session对象中存储的每一个属性对象,其结果为一个枚举类的实例。
- getCreationTime()返回session被创建的时间,最小单位为千分之一秒。为了得到一个对打印输出很有用的值,可将此值传给Date Constructor或者GregorinaCalendar的setTimeInMillis
- getId() 此方法返回唯一标识。每个session的ID是不同的
- getLastAccessedTime() 返回和当前session对象相关的客户端最后发生请求的时间,最小单位为千分之一秒。
- getMaxInactiveInterval() 返回总时间,负值表示session永远不会超时,它的值为该session对象的生存时间。
- invalidate() 销毁这个session对象,使得和它绑定的对象都失效。
- isNew() 如果客户端不接受使用Session,那么每个请求中都会产生一个session对象。
- removeAttribute(String name) 删除与指定name相联系的属性
- setAttribute(String name,java.lang.Object.value)设置指定名字name的属性值value,并将之存储在session对象中
session对象和客户端的会话紧密联系在一起,它由容器自动创建。
5. pageContext
pageContext对象被封装成javax.servlet.jsp.pageContext接口,它为JSP页面包装页面的上下文,管理对属性JSP中特殊可见部分中已命名对象的访问。它的创建和初始化都是由容器完成的。JSP页面里可以直接使用pageContext对象的句柄。pageContext对象的getXXX()、setXXX()和findXXX()方法可以用来根据不同的对象范围实现对这些对象的管理。
pageContext对象的主要功能是管理对属性JSP中特殊可见部分中已经命名对象的访问。pageContext对象的创建与初始化通常都对JSP程序员是透明的,JSP程序员可以从JSP中获取到用来代表pageContext对象的句柄,因此也就可以用pageContext对象的各种API。
pageContext对象中常用的方法有:
- forward(java.lang.String relativeUrlPath) 把页面重定向到另一个页面或者Servlet组件上
- getAttribute(java.lang.String name[, int scope]) scope参数是可选的。该方法用来检索一个特定的已经命名的对象的范围,并且还可以通过调用getAttributeNamesInScope()方法,检索对某个特定范围的每个属性String字符串名称的枚举。
- getException() 返回当前的exception对象
- getRequest() 返回当前的request对象
- getResponse() 返回当前的response对象
- getServletConfig() 返回当前页面的ServletConfig对象
- getServletContext() 返回ServletContext对象,这个对象对所有的页面都是共享的
- getSession() 返回当前页面的session 对象
- findAttribute() 方法则可以用来按照页面、请求、会话及应用程序范围的顺序实现对某个已经命名属性的搜索
- setAttribute() 方法可以用来设置默认页面范围或特定对象范围之中的已命名对象
- removeAttribute() 方法可以用来删除默认页面范围或特定对象范围之中的已命名对象
6. application
application对象为多个应用程序保存信息。对于一个容器而言,每个用户都共同使用一个application对象,这和session对象是不一样的。服务器启动后,就好自动创建application对象。这个对象会一直保持,直到服务器关闭为止。
application对象的主要方法有:
- getAttribute(String name) 返回由name指定的名字的application对象的属性的值
- getAttributeNames() 返回所有的application对象的属性的名字,其结果是一个枚举的实例
- getInitParameter(String name) 返回由name指定的名字的application对象的某个属性的初始值。
- getServletInfo() 返回Servlet编译器的当前版本的信息
- setAttribute( String name,Object object)设置由name指定名字的application对象的属性的值object。
7. Config
config对象被封装成javax.servlet.ServletConfig接口,它表示Servlet的配置。当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet。
config对象的常用方法有:
- getServletContext() 返回执行者的Servlet上下文
- getServletName() 返回Servlet的名字
- getInitParameter(String name) 返回名字为name的初始化参数的值
- getInitParameterNames() 返回这个JSP的所有的初始参数的名字
8. Page
page 对象是java.lang.Object类的一个实例。它指的是JSP实现类的实例,也就是说,它是JSP本身,通过这个可以对它进行访问。
JSP实现类对象的一个句柄,只有在JSP页面的范围之内才是合法的。
9. Exception
exception对象是java.lang.Throwable类的一个实例。它指的是运行时的异常,也就是被调用的错误页面的结果,只有在错误页面的结果,只有在错误页面(在页面指令里有isErrorPage=true的页面)中才可以使用