首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JSP学习札记之内置对象

2012-12-24 
JSP学习笔记之内置对象JSP中的内置对象一共有9个,此内置对象不需要经过实例化就可以使用。pageContext:java

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属性范围表示如下图所示:

JSP学习札记之内置对象

 

实例如下:

<%@ 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>


页面结果:

JSP学习札记之内置对象

从以上结果可以看出,在同一个页面中可以取得我们设置的PageContext属性的值

但是如果我们将此页面进行了forward跳转后将不能得到此属性的值,值为空(null),因为此时是使用了forward跳转,是服务器端的跳转,从而证明page属性只能在本页中被使用,跳转后将不能使用。如果希望跳转后依然可以使用那就使用request属性范围即可

 

|---Request属性:表示在一次服务器跳转中有效,只要是服务器跳转,则设置的request属性可以一直跳转下去

JSP学习札记之内置对象

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()内置对象设置属性name和date  --%>  <%  request.setAttribute("name","李海超");  request.setAttribute("date",new Date());  %>  <%--  对页面进行跳转  --%><jsp:forward page="request_forward.jsp"></jsp:forward>  </body></html>


结果处理页面---reqeust_forward.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ page contentType="text/html; charset=GBK" %><html>  <head>        <title>PageContext属性范围</title>  </head>  <body>  <%--  通过使用request.getAttribute()内置对象取得属性name和date  --%>  <%  String rename=(String)request.getAttribute("name");  Datedate =(Date)request.getAttribute("date");  %>  <%--  对页面进行跳转  --%><h1>姓名:<%=rename %></h1><h1>年龄:<%=date %></h1>  </body></html>


显示效果截图:

JSP学习札记之内置对象

如果在第二个页面中继续使用<jsp:forward  page="" />标签跳转到第三个页面,那么在第三个页面中依然可以使用request.getAttribute()方法获取第一个页面中设置的值,但是如果是使用超链接导向第三个页面的话讲不能获取到值

 

|---Session范围用图表示如下:session属性范围不管页面如何跳转都是可以取得的,但是只针对一个用户,知道浏览器关闭

JSP学习札记之内置对象

 

 

|---application属性范围:此属性范围是在服务器上设置一个范围,所以一旦设置后所有用户都可以访问此属性,直到此服务器关闭

JSP学习札记之内置对象

|---关于pageContext属性的进一步研究

以上的四中属性其实都是通过pageContext属性一起设置上的,pageContext类中有一个setAttribute()方法被重载了

public void setAttribute(String name,Object o ,int scope)此方法中存在一个整型的scope变量,此变量就是用来设置各属性的保存范围

JSP学习札记之内置对象

应用实例:

属性设置页面中使用了静态变量,PageContext.REQUEST_SCOPE来表示此pageContext的属性设置为request属性范围

<%@ 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.REQUEST_SCOPE);  pageContext.setAttribute("date",new Date(),PageContext.REQUEST_SCOPE);  %>  <%--  对页面进行跳转  --%><jsp:forward page="pagecontext_forward.jsp"></jsp:forward>  </body></html>



属性获取页面中使用request.getAttribute()方法,而不是pageContext.getAttribute()方法

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ page contentType="text/html; charset=GBK" %><html>  <head>        <title>PageContext属性范围</title>  </head>  <body>  <%--  通过使用request.getAttribute()内置对象取得属性name和date  --%>  <%  String rename=(String)request.getAttribute("name");  Datedate =(Date)request.getAttribute("date");  %>  <%--  对页面进行跳转  --%><h1>姓名:<%=rename %></h1><h1>年龄:<%=date %></h1>  </body></html>

 
 

热点排行