首页 > 代码库 > JSP九大内置对象
JSP九大内置对象
虽然现在基本上使用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()//重写异常错误的栈执行轨迹
JSP九大内置对象