日期:2014-05-16 浏览次数:20414 次
JSP中的内置对象一共有9个,此内置对象不需要经过实例化就可以使用。
pageContext: javax.servlet.jsp.PageContext
request: javax.servlet.http.HttpServletRequest
response:javax.servlet.http.HttpServletResoponse
session:javax.servlet.http.HttpSession
application:javax.servlet.ServletContext
config:javax.servlet.ServletConfig
out:javax.servlet.jsp.JspWrite
page:java.lang.Object
exception:java.lang.Throwable
JSP中提供了四中属性范围(page,application,request,session)
这四中属性范围都包含了如下的方法:
public void setAttribute(String name,Object value)----设置属性
public Object getAttribute(String name)----取得属性
public void removeAttribute(String name)---删除属性
|---Page属性范围:在一个页面设置的属性范围跳转到其它的页面就无法访问了,但是在使用此属性的时候必须注意,虽然习惯上将页面范围称为page范围,但是实际操作的时候是使用pageContext内置对象完成的。
pageContext从字面上的定义,可以发现,是表示一个页面的上下文,可以表示一个页面中的所有内容,pageContext属性范围表示如下图所示:
实例如下:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ page contentType="text/html; charset=GBK" %> <html> <head> <title>PageContext属性范围</title> </head> <body> <%-- 通过使用pageContext.setAttribute()内置对象设置属性name和date --%> <% pageContext.setAttribute("name","李海超"); pageContext.setAttribute("date",new Date()); %> <%-- 通过使用pageContext.getAttribute()内置对象取得name和date两个属性的值 --%> <% String rename = (String)pageContext.getAttribute("name"); Date redate = (Date)pageContext.getAttribute("date"); %> <%-- 输出属性的值 --%> <h1>姓名:<%=rename %></h1> <h1>日期:<%=redate %></h1> </body> </html>
页面结果:
从以上结果可以看出,在同一个页面中可以取得我们设置的PageContext属性的值
但是如果我们将此页面进行了forward跳转后将不能得到此属性的值,值为空(null),因为此时是使用了forward跳转,是服务器端的跳转,从而证明page属性只能在本页中被使用,跳转后将不能使用。如果希望跳转后依然可以使用那就使用request属性范围即可
|---Request属性:表示在一次服务器跳转中有效,只要是服务器跳转,则设置的request属性可以一直跳转下去
request属性范围应用实例:
属性设置页面----requestdemo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ page contentType="text/html; charset=GBK" %> <html> <head> <title>PageContext属性范围</title> </head> <body> <%-- 通过使用pageContext.setAttribute