日期:2014-05-16  浏览次数:20384 次

JSP学习笔记之内置对象

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