在JSP中为了简化用户的开发,提供了九个内置对象,这些内置对象将由容器为用户进行实例化,而用户直接使用即可,而不用像在java中那样,必须通过关键字new进行实例化对象之后才可以使用。
No. |
内置对象 |
类型 |
描述 |
1 |
pageContext |
javax.servlet.jsp.PageContext |
JSP的页面容器 |
2 |
request |
javax.servlet.http.HttpServletRequest |
得到用户的请求信息 |
3 |
response |
javax.servlet.http.HttpServletResponse |
服务器向客户端的回应信息 |
4 |
session |
javax.servlet.http.HttpSession |
用来保存每一个用户的信息 |
5 |
application |
javax.servlet.ServletContext |
表示所有用户的共享信息 |
6 |
config |
javax.servlet.ServletConfig |
服务器配置,可以取得初始化参数 |
7 |
out |
javax.servlet.jsp.JspWriter |
页面输出 |
8 |
page |
java.lang.Object |
表示从该页面中表示出来的一个Servlet实例 |
9 |
exception |
java.lang.Throwable |
表示JSP页面所发生的异常,在错误页中才起作用 |
在JSP中提供了四种属性的保存范围,所谓的属性保存范围,指的就是一个设置的对象,可以在多少个页面中保存并可以继续使用
四种属性范围:
- pageContext:只在一个页面中保存属性,跳转之后无效。
- request:只在一次请求中保存,服务器跳转后依然有效。
- session:在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用。
- application:在整个服务器上保存,所有用户都可以使用
No. |
方法 |
类型 |
描述 |
1 |
public void setAttribute(String name,Object o) |
普通 |
设置属性的名称及内容 |
2 |
public Object getAttribute(String name) |
普通 |
根据属性名称取得属性 |
3 |
public void removeAttribute(String name) |
普通 |
删除指定的属性 |
page属性范围(使用pageContext表示,但是一般来讲都习惯于将这种范围称为page范围)表示将一个属性设置在本页上,跳转之后无法取得 。
request属性范围 (如果要在服务器跳转之后属性可以继续保存下来,则可以使用request属性范围操作,request属性范围表示的是在服务器跳转之后,所有设置的内容依然会被保留下来 )
关于request属性范围的理解 :request表示的是客户端的请求,正常情况下,一次请求服务器只会给予一次回应,那么这个时候如果是服务器端跳转,请求的地址栏没有改变,所以也就相当于回应了一次,而如果地址栏改变了,就相当于是发出了第二次请求,则第一次请求的内容肯定就已经消失了,所以无法取得。
session属性范围 (如果现在希望一个属性设置之后,可以在任何一个与设置页面相关的页面中取得的话,则就可以使用session属性范围,使用session设置属性之后,不管是客户端跳转还是服务器端跳转,只要属性设置了就都可以取得 )
application属性范围(如果现在希望设置一个属性,可以让所有的用户(每一个session)都能看得见的话,则可以将属性范围设置成application,这样属性就保存在了服务器之上。)
其他对象:
response对象的主要作用是用于对客户端的请求进行回应,将WEB服务器处理后的结果发回给客户端。response对象属于javax.servlet.http.HttpServletResponse接口的实例,HttpServletResponse接口的定义如下:
public interface HttpServletResponse extends ServletResponse
config对象是javax.servlet.ServletConfig接口的实例化对象,主要的功能是取得一些初始化的配置信息。
常用方法:
public String getInitParameter(String name)
public Enumeration getInitParameterNames()
out对象是javax.servlet.jsp.JspWriter类的实例化对象,主要的功能就是完成页面的输出操作,使用println()或print()方法输出,但是从实际的开发来看,直接使用out对象的几率较少,都会使用表达式完成输出的操作。
out对象定义了如下的几个操作:
public int getBufferSize()
public int getRemaining()
pageContext对象是javax.servlet.jsp.PageContext类的实例,主要表示的是一个JSP页面的上下文,在此类中除了之前讲解过的属性操作之外,还定义了以下的一些方法:
public abstract void forward(String relativeUrlPath) throws ServletException,IOException
public void include(String relativeUrlPath) throws ServletException,IOException
public ServletConfig getServletConfig()
public ServletContext getServletContext()
public ServletRequest getRequest()
public ServletResponse getResponse()
public HttpSession getSession()