JAVAEE之内置对象和属性范围

内置对象和属性范围

  • 四种属性范围
  • 九个内置对象

1.内置对象

如果说想要使用一个对象,必须new 出来,但是在我们的jsp操作中,发现我们使用过的out,request对象没有进行实例化,类似于这样的对象,我们叫做jsp的内置对象,也就是收不需要实例化的对象,总共有9个。


序号


对象


类型


1


pageContext


javax.servlet.jsp.PageContext


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


9


exception


java.lang.Throwable

2.属性范围

在jsp中,有四种属性范围,所谓属性范围,就是指在一个jsp中设置了属性,是否可以在其他页面能够访问。四种属性范围分别指的是以下的四种:

  • ·属性范围在当前页面有效:设置了一个属性,在设置属性的页面可以取得属性,跳转到其他页面则无法取得设置的属性
  • ·属性范围在服务端跳转范围内有效:一个页面设置了属性,然后经过服务端跳转(n次),依然可以取得设置的属性
  • ·属性范围在一次会话中有效:一个页面设置属性,无论是经过服务端还是客户端跳转,只要浏览器不重启,设置的属性都可以取得。
  • ·属性范围在服务器上下文中有效:页面设置的属性,无论是经过客户端还是服务端跳转,无论是哪一个会话,只要服务器不重启,设置的属性都可以访问。

NO


方法


描述


1


public void setAttribute(String name,Object val)


设置属性


2


pulblic Object getAttribute(String name)


取得属性


3


public void removeAttribute(String  name)


删除属性

2.1page属性范围

page属性范围也就是我们上面所提到的第一种属性范围,使用的是pageContext这个内置对象设置和取得的,指的是在一个页面使用pageContext设置了属性之后,本页面可以通过pageContext取得设置的属性,跳转到其他页面之后无法取得设置的属性。要注意的一点,所谓的page属性范围使用的是pageContext这个内置对象设置和取得的。

<%@page contentType="text/html; charset=utf-8"%>
<%
    //设置属性
    pageContext.setAttribute("company","厦门");
    pageContext.setAttribute("address","厦门市");
    pageContext.setAttribute("tel","0592-2565166");
%>
<!-- 取得设置的属性 -->
<h1><%=pageContext.getAttribute("company") %></h1>
<h1><%=pageContext.getAttribute("address") %></h1>
<h1><%=pageContext.getAttribute("tel") %></h1>

如果现在我们通过服务端跳转,看能不能取得设置的属性

<%@page contentType="text/html; charset=utf-8"%>
<!-- 取得设置的属性 -->
<h1><%=pageContext.getAttribute("company") %></h1>
<h1><%=pageContext.getAttribute("address") %></h1>
<h1><%=pageContext.getAttribute("tel") %></h1>
<h1>这是pageAttributeDemo02.jsp</h1>

发现我们通过服务端跳转后取不到之前设置的page范围的属性了,如果说想要通过服务端跳转后也能取得设置的属性,我们必须使用第二种属性范围。

2.2request属性范围

request属性范围,是第二种属性范围,也就是说设置的属性在当前页面可以取得,通过服务端跳转之后也可以取得设置的属性。

<%@page contentType="text/html; charset=utf-8"%>
<%
    //设置属性
    request.setAttribute("company","厦门");
    request.setAttribute("address","厦门市");
    request.setAttribute("tel","0592-2565166");
%>
<!-- 取得设置的属性 -->
<h1><%=request.getAttribute("company") %></h1>
<h1><%=request.getAttribute("address") %></h1>
<h1><%=request.getAttribute("tel") %></h1>
<jsp:forward page="pageAttributeDemo02.jsp"></jsp:forward>
<%@page contentType="text/html; charset=utf-8"%>
<!-- 取得设置的属性 -->
<h1><%=request.getAttribute("company") %></h1>
<h1><%=request.getAttribute("address") %></h1>
<h1><%=request.getAttribute("tel") %></h1>
<h1>这是pageAttributeDemo02.jsp</h1>

通过

<%@page contentType="text/html; charset=utf-8"%>
<%
    //设置属性
    request.setAttribute("company","厦门");
    request.setAttribute("address","厦门");
    request.setAttribute("tel","0592-2565166");
%>
<!-- 取得设置的属性 -->
<h1><%=request.getAttribute("company") %></h1>
<h1><%=request.getAttribute("address") %></h1>
<h1><%=request.getAttribute("tel") %></h1>
<jsp:forward page="requestAttributeDemo02.jsp"></jsp:forward>

现在,我们发现,request范围属性经过多次跳转之后,依然可以取得设置的属性,那么现在如果经过客户端跳转呢?

<%@page contentType="text/html; charset=utf-8"%>
<%
    //设置属性
    request.setAttribute("company","厦门");
    request.setAttribute("address","厦门");
    request.setAttribute("tel","0592-2565166");
%>
<!-- 取得设置的属性 -->
<h1><%=request.getAttribute("company") %></h1>
<h1><%=request.getAttribute("address") %></h1>
<h1><%=request.getAttribute("tel") %></h1>
<a href="requestAttributeDemo03.jsp">客户端跳转</a>
<%@page contentType="text/html; charset=utf-8"%>
<!-- 取得设置的属性 -->
<h1><%=request.getAttribute("company") %></h1>
<h1><%=request.getAttribute("address") %></h1>
<h1><%=request.getAttribute("tel") %></h1>
<h1>这是requestAttributeDemo03.jsp</h1>

通过程序运行结果发现,通过客户端跳转不能够取得设置的request范围的属性,那么如果现在我就想要通过客户端取得设置的属性呢?那么我们可以使用第三种范围属性。

3.session

session属性范围就是我们第三种属性范围,也就是之前提到过的,属性范围在一次会话中有效。是无论经过客户端还是服务端跳转,都可以取得设置的属性,当然前提是浏览器不能重启。

<%@page contentType="text/html; charset=utf-8"%>
<%
    //设置属性
    session.setAttribute("company","厦门");
    session.setAttribute("address","厦门");
    session.setAttribute("tel","0592-2565166");
%>
<!-- 取得设置的属性 -->
<h1><%=session.getAttribute("company") %></h1>
<h1><%=session.getAttribute("address") %></h1>
<h1><%=session.getAttribute("tel") %></h1>

<a href="sessionAttributeDemo03.jsp">客户端跳转</a>
<%@page contentType="text/html; charset=utf-8"%>
<!-- 取得设置的属性 -->
<h1><%=session.getAttribute("company") %></h1>
<h1><%=session.getAttribute("address") %></h1>
<h1><%=session.getAttribute("tel") %></h1>
<h1>02</h1>
<%@page contentType="text/html; charset=utf-8"%>
<!-- 取得设置的属性 -->
<h1><%=session.getAttribute("company") %></h1>
<h1><%=session.getAttribute("address") %></h1>
<h1><%=session.getAttribute("tel") %></h1>
<h1>03</h1>

以上的程序说明我们session范围的属性,在经过客户端或者服务端跳转之后,设置的属性依然可以取得。现在我们来重启一下浏览器:通过操作发现,重启浏览器之后,取不到设置的session范围属性了,那么如果现在想要在浏览器重启后取得设置的属性,我们必须使用第四种属性范围。

4.application属性范围

application范围属性就是第四种范围属性,属性是设置在服务器的上下文中,只要服务器不重启,那么设置的属性统统都可以取得。无论是经过客户端你还是服务端还是浏览器重启,都可取得设置的属性。

<%@page contentType="text/html; charset=utf-8"%>
<%
    //设置属性
    application.setAttribute("company","厦门");
    application.setAttribute("address","厦门");
    application.setAttribute("tel","0592-2565166");
%>
<!-- 取得设置的属性 -->
<h1><%=application.getAttribute("company") %></h1>
<h1><%=application.getAttribute("address") %></h1>
<h1><%=application.getAttribute("tel") %></h1>

<a href="applicationAttributeDemo03.jsp">客户端跳转</a>
<%@page contentType="text/html; charset=utf-8"%>
<!-- 取得设置的属性 -->
<h1><%=application.getAttribute("company") %></h1>
<h1><%=application.getAttribute("address") %></h1>
<h1><%=application.getAttribute("tel") %></h1>
<h1>03</h1>

设置的application范围的属性,无论是通过客户端还是服务端或者浏览器重启,都可以取得设置的属性。那么现在如果服务器重启呢?通过操作发现,重启服务器后,之前设置的属性取不到了,那么如果想要在重启服务器后取得设置的属性呢?那是没有办法的。

3.属性范围使用说明

在开发中,我们常用的属性范围就是request和session范围,那么在开发中,怎么区分使用二者呢?一般来说,只对于同一个功能的属性的传递,使用request范围属性。那么对于session范围来说,主要还是用于登陆上面。

4.关于pageContext属性的进一步说明

上面我们讲解的是四种属性范围,实际上四种属性范围都是通过pageContext设置的,在pageContext中,setAttribute()方式实际上被重载过:

·设置属性:

·public abstract void setAttribute(java.lang.String name,  java.lang.Object value)

·public abstract void setAttribute(java.lang.String name,

java.lang.Object value,

int scope)

对于这两个方法,第一个方法是我们之前一直在使用的,对于第二个方法,相比第一个方法多了一个参数(int scope),实际上这个参数就是指定属性范围的参数:

·APPLICATION_SCOPE

·PAGE_SCOPE

·SESSION_SCOPE

·REQUEST_SCOPE

也就是说,通过这个方法,我们可以设置四种属性范围。

<%@page contentType="text/html; charset=utf-8"%>
<%
    pageContext.setAttribute("j1m","111",PageContext.SESSION_SCOPE);
%>
<a href="pageContextDemo02.jsp">跳转</a>
<%@page contentType="text/html; charset=utf-8"%>
<h1>02</h1>
<h1><%=session.getAttribute("jjm") %></h1>

总结,知道九个内置对象(pageContext,session,request,response,applicatino,config,page,exception),充分掌握四种属性范围(page仅对于自己的页面传值;request应用于服务端传值,但是客户端跳转不能传值;session一般应该于用户的登录注册保存在一次会话中,会话结束,属性值消失;application属性范围应用于整个服务器中,服务器关闭属性值消失。

时间: 2024-10-09 06:56:32

JAVAEE之内置对象和属性范围的相关文章

JSP内置对象和属性

JSP内置对象和属性列举如下: 1.request对象     客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例.2.response对象     response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它.它是HttpServletResponse类的实例.3.session对象     session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开

JavaScript高级用法二之内置对象

综述 本篇的主要内容来自慕课网,内置对象,主要内容如下 1 什么是对象 2 Date 日期对象 3 返回/设置年份方法 4 返回星期方法 5 返回/设置时间方法 6 String 字符串对象 7 返回指定位置的字符 8 返回指定的字符串首次出现的位置 9 字符串分割split() 10 提取字符串substring() 11 提取指定数目的字符substr() 12 Math对象 13 向上取整ceil() 14 向下取整floor() 15 四舍五入round() 16 随机数 random(

js基础之内置对象

String对象:处理所有的字符串操作  Math对象:处理所有的数学运算  Date对象:处理日期和时间的存储.转化和表达  Array对象:提供一个数组的模型.存储大量有序的数据  Event对象:提供JavaScript事件的各种处理信息 内置对象都有自己的方法和属性,访问的方法如下: 对象名.属性名称 对象名.方法名称(参数表) String(字符串对象): 方法 String 对字符串的支持 String.charAt( ) 返回字符串中的第n个字符 String.charCodeAt

JSP学习笔记四:JSP语法之内置对象

JSP有9个内置对象,分别是request(请求对象).response(响应对象). pageContext(页面上下文对象).session(会话对象).application(应用程序对象).out(输出对象).config(配置对象).page(页面对象)和exception(例外对象). 那么,这些对象是怎么来的呢?我们看一下转译文件. public void _jspService(final javax.servlet.http.HttpServletRequest request

js之内置对象Function、Object与自定义函数间原型prototype间的关系图

注意:内置的函数对象Funtion的原型prototype是Object的实例,但却是function类型.Function.prototype instanceof Object; // true --- 是Object的实例Function.prototype instanceof Function ;// falsetypeof Function.prototype ; // "function" --- 是function类型.

js进阶篇之内置对象

1.Date对象 方法: set/getFullYear()  年 set/getMonth()    月 set/getDate()      日 set/getDay()       星期:(0~6)周日到周六 set/getHours() 时 set/getMinutes() 分 set/getSeconds() 秒 返回星期: var mydate = new Date(); var week = ["星期日","星期一","星期二",&

EcmaScript内置对象的属性与方法

JSP之指令、动作元素、内置对象、变量作用域

1.指令(三大指令) 指令                                指令描述 <%@ page ... %>                 定义网页依赖属性,比如脚本语言.error页面.缓存需求等等 <%@ include ... %>              包含其他文件 <%@ taglib ... %>                引入标签库的定义 例如: <%@ page language = "java"

js常用内置对象、Dom对象、BOM对象

11.html元素事件属性中,如onclick="",双引号里可以是方法条用,可以是js代码(无需加<script>标签) 12.JavaScript内置 对象.属性和方法(您也应该避免使用 JavaScript 内置的对象.属性和方法的名称作为 Javascript 的变量或函数名):Array     Date     eval     function     hasOwnPropertyInfinity     isFinite     isNaN     isPr