首页 > 代码库 > jsp九大内置对象

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捕获的错误。传向了errorpageURI

page

 

 

1、out对象

out对象被封装成javax.servlet.jsp.JspWriter接口。它表示为客户打开的输出流,PrintWriter使用它向客户端发送输出流。简单地说,它主要用来向客户端输出数据,代表输出流的对象。

out的主要方法有:

out.print(datatype)out.println(datatype)

datatype可以是booleancharchar[]doublefloatintlongObjectString

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的参数,通过GETPOSTHEAD等方法可以得到request的类型,通过CookiesReferer等可以得到请求的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()获得客户端向服务器端传送数据的方法,如getpost等。

getParameter(String name)获得客户端传送给服务器端的参数值,该参数是由name指定的,通常是表单中的参数。

getParameterNames()获得客户端传送给服务器端的所有参数名字,其结果是一个枚举的实例。

getParameterValues(String name)获得指定参数的所有值,参数由name指定。

getProtocol()获取客户端向服务器端传送数据所依据的协议名称。

getQueryString()获得查询字符串,该字符串是由客户端以get方法向服务器端传送的。

getRequestURI()获取发出请求字符串的客户端地址。

getRemoteAddr()获取客户端的IP地址。

getRemoteHost()获取客户端的名字。

getSession([Boolean create])返回和请求相关的sessioncreate参数是可选的。当有参数create且这个参数的值为true时,如果客户端还没有创建session,那么将创建一个新的session

getServerName()获取服务器的名字。

getServletPath() 获取客户端所请求的脚本文件的文件路径。

getServletPort() 获取服务器的端口号。

removeAttribute(String name) 删除请求中的一个属性。

setAttribute(String name,java.lang.Object obj)设置名字为namerequest参数的值,该值是由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信息保存在容器里,sessionID保存在客户机的Cookie中。

一般情况下,用户首次登陆系统时容器会给此用户分配一个唯一标识的session id,这个id用于区分其他的用户。当用户退出系统时,这个session就会自动消失。和session对应的是HttpSession接口。

session对象的主要方法有:

getAttribute(String name) 获取与指定名字name相联系的属性。

getAttributeNames() 返回session对象中存储的每一个属性对象,其结果为一个枚举类的实例。

getCreationTime() 返回session被创建的时间,最小单位为千分之一秒。

getId()此方法返回唯一的标识。每个sessionID是不同的。

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="http://www.mamicode.com/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)中才可以使用。

jsp九大内置对象