虽然现在基本上我们都是使用SpringMVC+AJAX进行开发了Java Web了,但是还是很有必要了解一下JSP的九大内置对象的。像request、response、session这些对象,即便使用其他框架也是会经常用到的。因此十分有了解的必要。
这些对象可以在JSP页面中调用,而不需要事先定义,这使得JSP编程更加的方便和快捷。其实这些内置对象都对应着某个Servlet类,在JSP被翻译成Servlet之后,这些内置对象会相应转换成对应的类实例。
内置对象特点:
1. 由JSP规范提供,不用编写者实例化。
2. 通过Web容器实现和管理。
3. 所有JSP页面均可使用。
4. 只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)。
常用内置对象:
1. 输出输入对象:request对象、response对象、out对象。
2. 通信控制对象:pageContext对象、session对象、application对象。
3. Servlet对象:page对象、config对象。
4. 错误处理对象:exception对象。
1、request对象javax.servlet.http.HttpServletRequest
request内置对象是最常用的对象之一,它代表的是java.servlet.HttpServletRequest类的对象。request内置对象中包含了有关浏览器请求的信息,并提供了多个用于获取cookie、header以及session内数据的方法。
//requeset对象是从客户端向服务器发出的请求,可以通过这个对象了解客户端信息。
isUserInRole(String role) :判断认证后的用户是否属于逻辑的role中的成员。
getAttribute(String name) :返回由name指定的属性值。若不存在则为空。
getAttributes():返回request对象的所有属性的名字集合,其结果是一个枚举的实例。
getCookies() :返回客户端的所有Cookie对象,结果是一个Cookie数组。
getCharacterEncoding(): 返回请求中的字符编码方式。
getContentLength() :返回请求的Body的长度,如果不确定长度,返回-1。
getHeader(String name): 获得HTTP协议定义的文件头信息。
getHeaders(String name): 返回指定名字的request Header的所有值,其结果是一个枚举的。
getHeaderNames():返回所有request Header的名字 ,其结果是一个枚举实例。
getInputStream() :返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法,如GET,POST,HEADER,TRACE等。
getParameter(String name):获得客户端传送给服务器端的参数值。
getParameterNames(): 获得客户端传送给服务器端的所有参数名字,其结果是一个枚举的实例。
getParameterValues(String 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 obj):设置request的参数值。
2、response对象 javax.servlet.http.HttpServletResponse
response对象和request对象的性质相反,它所包含的是服务器向客户端做出的应答信息.实现过程中response被包装成HttpServletResponse接口,它包含装了JSP产生的响应,然后被发送到客户端以响应客户端的请求。
addCookie(Cookie cook):添加一个Cookie对象,用来保存客户端的用户信息。
addHeader(String name,String value):添加HTTP文件头信息。该Header信息将传达到客户端,如果已经存在同名的则会覆盖。
containsHeader(String name):判断指定字句的Header是否已经存在,返回真假。
encodeURL():使用sessionId封装URL。如果没有封装URL则返回原值。
flushBuffer():强制把当前缓冲区的内容发送到客户端。
getBufferSize():返回缓冲区的大小。
getOutputStream():返回到客户端的输出流。
sendError(int):向客户端发送错误信息。如404 指网页不存在 。
sendRedirect(String location):把响应发送到另一个位置 进行处理 即请求重定向。
setContent(String contentType):设置响应的MIME类型。
getWriter():此方法返回一个PrintWriter对象。
getCharacterEncoding():该方法获得此时相应所采用的字符编码类型。
setDateHeader(String name,heaername,long date):把指定的头名称以及日期设置为响应头信息 其值是从新纪元算起的毫秒数。
setHeader(String name,String value):设置指定名字的HTTP文件头的值,若存在则会覆盖。
3、session对象 javax.servlet.http.HttpSession
Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这换个ID号发送到客户端,存放在Cookie中,这样Session对象,直到客户关闭浏览器后,服务器端该客户的Session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的Session对象。
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。
session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
getAttribute():获取与指定名字相联系的属性。
getAttributeNames():session对象中存储的每一个对象,其结果为一个枚举的实例。
getCreateTime():返回session的创建时间,最小单位这千分之一秒。
getId():返回唯一的标识,每个session的ID是不同的。
getLastAccessedTime():返回和当前session对象相关的客户端最后发送的请求时间。
setMaxInactiveInterval(int number):该方法设定保存session数据的时间,参数number为秒数。
getMaxInactiveInterval():返回决时间,负值表示session永远不会过期。它的值为session的生存时间。
invalidate():销毁这个对像。
isNew():如果客户端不接受使用session,那么每个请求中都会产生一个session对象。
removeAttribute(String name):删除与指定名字相联系的属性。
setAttribute(String name,java.langObject obj):设置指定名字的属性值 并将 其存储在session中。
4、application对象javax.servlet.ServletContext
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
服务器启动后就产生了这个Application对象,当客户再所访问的网站的各个页面之间浏览时,这个Application对象都是同一个,直到服务器关闭。但是与Session对象不同的时,所有客户的Application对象都时同一个,即所有客户共享这个内置的Application对象。
getAttribute(String name):返回指定名字的application对象的属性的值。
getAttributeNames():返回所有应用程序级对象的属性的名字 ,其结果为枚举的实例。
getInitParameter(String name):返回由指定名字的application对象的某个属性的初始值。
getServletInfo():返回Servlet编译器的当前版本的信息。
setAttribute(String name,Object obj):设置 指定名字的application对象的属性的值 。
removeAttribute(string Key):通过关键字来删除一个对象的信息。
getRealPath(String path):返回虚拟路径的真实路径。
getContext(String URLPath):返回执行Web应用的application对象。
getMajorVersion():返回服务器支持的Servlet API最大版本号。
getMinorVersion():返回服务器支持的Servlet API最小版本号。
getMimeType(String file):返回指定文件的MIME类型。
getResource(String path):返回指定资源的输入流。
getResourceDispathcher(String URLPath):返回指定资源的RequestDispathcher。
getServlet(String name):返回 指定名称的servlet。
getServlets():返回所有的Servlet,返回类型为枚举型。
getServletNames():返回所有的Servlet名称,返回类型为枚举型。
log(String msg):把指定信息写入到Servlet的日志文件中。
log(String msg,Throwable throwable):把轨迹以及给出的Throwable异常说明信息写入Servlet的日志文件。
5、out 对象javax.servlet.jsp.jspWriter
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
Out对象时一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出。
out.print()://输出数据。
out.newLine()://输出一个换行符。
out.flush()://输出缓冲区里的数据。
out.close()://关闭输出流。
out.clearBuffer()://清除缓冲区里的数据,并把数据输出到客户端。
out.clear()://清除缓冲区里的数据,但不会把数据输出到客户端。
out.getBufferSize()://获得缓冲区大小。
out.getRemaining()://获得缓冲区中没有被占用的空间大小。
out.isAutoFlush()://返回布尔值。如果AutoFlush为真 则返回真。
6、pageContext 对象javax.servlet.jsp.PageContext
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。
pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
forward(String UriPath):重定向。
getAttribute(String name,[int scope] ): scope可选。用来检索一个特定的已经 命名的对象的范围,并且还可以通过调用 getAttributeNamesInScope()方法 ,检索对鞭个特定范围的每个属性String字符串名称的枚举。
getException():返回当前的exception对象。
getRequest():返回当前的request对象。
getResponse():返回当前的response对象。
getServletConfig():返回当前页面的ServletConfig对象。
getServletContext():返回ServletContext对象。这个对象对所有页面都是共享的。
getSession():返回当前的session对象。
findAttribute():可以用来按照页面,请求,会话以及应用程序范围顺序实现对某个已经命名的属性的搜索。
setAttribute():可以用来设置默认页面范围或特定范围之中的已命名对象。removeAttribute()可以用来删除默认范围或特定范围内的已命名对象。
7、config 对象javax.servlet.ServletConfig
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
getServletContext():返回执行者的Servlet上下文。
getServletName():返回Servlet的名字。
getInitParameter(String name):返回名字为name的初始参数的值。
getInitParameterNames():返回这个JSP的所有的初始参数的名字。
8 page对象 java.lang.Object
page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。page是java.lang.Object类的对象。
page.getClass()://获得page对象的类。
page.hashCode()://获得page对象的hash码。
page.toString()://将此page对象转换为String类对象。
page.notify()://唤醒一个等待的进程。
page.notifyAll()://唤醒所有等待的进程。
page.wait()://使一个线程处于等待直到被唤醒。
page.wait(long timeout)://使一个线程处于等待直到timeout或被唤醒。
9、exception 对象java.lang.Throwable
exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。
excepation对象和Java的所有对象一样,都具有系统提供的继承 结构。
exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
exception对象只有在错误页面(在页面指令里有isErrorPage=true的页面)才可以使用。
getMessage()://获取异常消息字符串。
getLocalizeMessage()://获取本地化语言的异常错误。
printStackTrace()://显示异常的栈跟踪轨迹。
toString()://返回关于异常错误的简单消息描述。
fillInStackTrace()://重写异常错误的栈执行轨迹。