jsp九大内置对象
jsp为简化页面的开发提供了一些内部对象。这些内部对象不需要由jsp的编写者实例化,它们由容器实现和管理,在所有的jsp页面中都能使用内部对象。所有的隐含对象只有对scriptlets或者表达式有用,在jsp声明中不可用。jsp有以下内置对象:
l request对象
l response对象
l pageContext对象
l session对象
l application对象
l out对象
l config对象
l page对象
l exception对象
jsp内置对象
对象 |
类型 |
描述 |
作用域 |
request |
javax.servlet.ServletRequest的子类 |
客户端的请求,如果客户的请求中有参数,则该对象就有一个参数列表 |
request(用户请求期) |
response |
javax.servlet.ServletResponse的子类 |
jsp页面的响应 |
page(页面执行期) |
pageContext |
javax.servlet.jsp.PageContext |
解决方案是jsp引擎编译用factory类返回的服务器的PageContext类的实现方法。 |
page(页面执行期) |
session |
javax.servlet.http.HttpSession |
httpsession是与request联合的对象 |
session(回话期) |
application |
javax.servlet.ServletContext |
servlet()的环境通过调用getServletConfig().getContext()方法获得 |
application(整个web应用程序运行期) |
out |
javax.servlet.jsp.JspWriter |
代表输出流的对象 |
page |
config |
javax.servlet.ServletConfig |
页面的ServletConfig对象 |
page |
page |
java.lang.Object |
指向页面自身的方式(在java代码中多以this替代) |
page |
exception |
java.lang.Throwable |
没有被Throwable捕获的错误。传向了errorpage的URI |
page |
1、out对象
out对象被封装成javax.servlet.jsp.JspWriter接口。它表示为客户打开的输出流,PrintWriter使用它向客户端发送输出流。简单地说,它主要用来向客户端输出数据,代表输出流的对象。
out的主要方法有:
out.print(datatype)、out.println(datatype)
datatype可以是boolean、char、char[]、double、float、int、long、Object、String。
out.newLine() 输出一个换行字符。
out.flush() 输出缓冲区里的数据。
out.close() 关闭输出流。
out.clearBuffer() 清除缓冲区里的数据,并把数据输出到客户端。
out.clear() 清除缓冲区里的数据,但不会把数据输出到客户端。
out.getBufferSize() 获得缓冲区的大小。
out.getRemaining() 获得缓冲区中没有被占用的空间的大小。
out.isAutoFlush() 返回布尔值。
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数组。
getChrarcterEncoding()返回请求中的字符编码方式。
getContentLength()返回请求的Body的长度,如果不确定长度,返回-1。
getHeader(String name)获得HTTP协议定义的文件头信息。
getHeaders(String name)返回指定名字的request Header的所有值,其结果是一个枚举的实例。
getHeaderNames()返回所有request Header的名字,其结果是一个枚举的实例。
getInputStream()返回请求的输入流,用于获得请求中的数据。
getMethod()获得客户端向服务器端传送数据的方法,如get、post等。
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() 获取客户端所请求的脚本文件的文件路径。
getServletPort() 获取服务器的端口号。
removeAttribute(String name) 删除请求中的一个属性。
setAttribute(String name,java.lang.Object obj)设置名字为name的request参数的值,该值是由java.lang.Object类型的obj指定的。
3、response对象
response对象被包装成HttpServletResponse接口。它封装了jsp产生的响应,然后被发送到客户端以响应客户的请求。和request对象一样,它由容器生成,作为jspService()方法的参数被传入jsp。
response对象的主要方法有:
addCookie(Cookie cook) 添加一个Cookie对象,用来保存客户端的用户信息。
addHeader(String name,String value) 添加HTTP文件头信息。该Header将传到客户端,如果已经存在同名的Header,则将会覆盖已有的Header。
containsHeader(String name) 判断指定名字的HTTP文件头是否已经存在,然后返回真假布尔值。
encodeURL() 使用sessionId封装URL。如果没有必要封装,返回原值。
flushBuffer()强制把当前缓冲区的内容发送到客户端。
getBufferSize() 返回缓冲区的大小。
getOutputStream() 返回到客户端的输出流对象。
sendError(int) 向客户端发送错误的信息。例如,404是指页面不存在。
sendRedirect(String Location) 把响应发送到另一个位置进行处理。
setContentType(String contentType)设置响应的MINE类型。
setHeader(String name,String value) 设置指定名字的HTTP文件头的值,如果已经存在,则将旧值覆盖。
4、session对象:session对象和客户端的回话紧密联系在一起,它由容器自动创建。
session用来保存每个用户信息,以便跟踪每个用户的操作状态。session信息保存在容器里,session的ID保存在客户机的Cookie中。
一般情况下,用户首次登陆系统时容器会给此用户分配一个唯一标识的session id,这个id用于区分其他的用户。当用户退出系统时,这个session就会自动消失。和session对应的是HttpSession接口。
session对象的主要方法有:
getAttribute(String name) 获取与指定名字name相联系的属性。
getAttributeNames() 返回session对象中存储的每一个属性对象,其结果为一个枚举类的实例。
getCreationTime() 返回session被创建的时间,最小单位为千分之一秒。
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对象中。
5、pageContext对象
pageContext对象被封装成javax.servlet.jsp.pageContext接口,它为jsp页面包装页面的上下文,管理对属于jsp中特殊可见部分中已命名对象的访问。它的创建和访问都是由容器来完成的。jsp页面里可以直接使用pageContext对象的句柄。
pageContext对象的主要功能是管理对属于jsp中特殊可见部分中已经命名对象的访问。pageContext对象的创建与初始化通常都对jsp程序员是透明的,jsp程序员可以从jsp中获取到用来代表pageContext对象的句柄,因此也就可以使用pageContext对象的各种API。
pageContext对象的常用方法有:
forward(java.lang.String relativeUrlPath) 把页面重定向到另外一个页面或者Servlet组件上。
getAttribute(java.lang.String name[,int scope])scope参数是可选的。该方法用来检索一个特定的已经命名的对象的范围,并且还可以通过调用getAttributeNameInScope()方法,检索对某个特定范围的每个属性String字符串的枚举。
getException() 返回当前的exception对象。
getRequest() 返回当前的request对象。
getResponse() 返回当前的response对象。
getServletConfig() 返回当前页面的ServletConfig对象。
getServletContext() 返回ServletContext对象。这个对象对所有的页面都是共享的。
getSession() 返回当前页面的session对象。
findAttribute() 可以用来按照页面、请求、回话及应用程序范围的顺序实现对某个已经命名属性的搜索。
setAttribute() 用来设置默认页面范围或特定对象范围之中的已命名对象。
removeAttribute() 用来删除默认页面范围或特定对象范围之中的已命名对象。
==>pageContext属性默认在当前页面是共享的。
session中的属性在当前session中是共享的。
ServletContext对象中的属性对所有的页面都是共享的。
6、application对象
application对象为多个应用程序保存信息。对于一个容器而言,每个用户都共同使用一个application对象,这和session对象是不同的。application对所有用户共享,session每个用户不同。
application对象的主要方法有:
getAttribute(String name)返回由name指定的名字的application对象的属性的值。
getAttributes()返回所有的application对象的属性的名字,其结果是一个枚举的实例。
getInitParameter(String name)返回由name指定的名字的application对象的某个属性的初始值。
getSrevletInfo()返回Servlet编译器的当前版本信息。
setAttribute(String name,Object obj) 设置由name指定名字的application对象的属性的值obj。
使用application为页面做计数器:
application.jsp
<%
int count=0;
String counter_name=request.getParameter("counter_name");
try{
count=Integer.parseInt((application.getAttribute(counter_name).toString()));
}catch(Exception e){
System.out.print("first time");
}
out.print("自从服务器启动后,此页面已经访问了"+count+"次");
count++;
application.setAttribute(counter_name, new Integer(count));
%>
test_application.jsp
测试application的页面。<br>
<jsp:include page="application.jsp">
<jsp:param value="test_application" name="counter_name"/>
</jsp:include>
7、config对象
config对象被封装成javax.servlet.ServletConfig接口,它表示Servlet的配置。当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet。
config常用的方法有:
getServletContext() 返回执行者的上下文。
getServletName() 返回Servlet的名字。
getInitParameter(String name) 返回名字为name的初始参数的值。
getInitParameterNames()返回这个jsp的所有的初始参数的值。
8、page对象
page对象是java.lang.Object类的一个实例。它指的是jsp实现类的实例,也就是说,他是jsp本身,通过这个可以对它进行访问。
9、exception对象
exception对象是java.lang.Throwable类的一个实例。它指的是运行时的异常,也就是被调用的错误页面的结果,只有在错误页面(isErrorPage=true)中才可以使用。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。