-
2017-06-26 15:56:38
JSP中的内置对象及其有效范围:
1、JSP中包含大量的内置对象和可扩展的组件对象,可以说,对象是JSP编程技术的精髓。内置对象是不需要声明的,就可以直接在JSP中使用的对象。
2、在JSP代码段中,可以利用内置对象与JSP页面的执行环境产生互动。JSP提供的内置对象共有9个,分别是:request(request)、response(page)、out(page)、session(session)、application(application)、pageContext(page)、page(page)、config(page)、exception(page). 注:[“()”内的是该对象的有效范围]
3、内置对象的有限范围,就是指一个对象可以跨多少个JSP页面之后还可以继续使用。JSP中提供了4中属性有效保护范围,分别为page、request、session以及application.
(1)page范围:在一个JSP页面上设置的属性只能在一个页面取得,跳转到其他页面则此属性消失。实际上操作的时候是采用pageContext内置对象来完成的。
(2)request范围:request可以把属性保存在一次服务器跳转范围中,即转发请求(使用<jsp:forward>动作来实现),而不能是请求重定向(使用response.sendRedirect.()或者超链接来实现)。
(3)session范围:session范围属性无论页面怎么跳转,都可以保存下来。但是,只针对于同一个浏览器打开的相关页面。
(4)application范围:application范围是把属性设置在整个服务器上,所有的用户都可以进行访问。
4、在9个内置对象中,request、response和session是最为重要的3个对象,这三个对象体现了服务器端与客户端(即浏览器)进行交互通信的控制。
5、内置对象按其功能,主要可以划分为以下4类:
(1)输入输出对象:request对象、response对象、out对象。
(2)与属性相关的对象:session对象、application对象、pageContext对象
(3)与Servlet相关的对象:page对象、config对象
(4)错误处理对象:exception (注:如果一个JSP页面要使用该对象,就必须把isErrorPage设为true,否则无法编译。)
更多相关内容 -
Integer对象范围(-128-127)之间
2018-06-17 21:05:16这种情况是在常量池中开辟出同一个空间来存储12,所以b1和b2都指向12,如下图所示:接下来说说,Integer的缓冲范围,因为不是在堆区new一个对象,那么在常量池中就必须对其的大小范围做出一个规定,有一个规范叫JSL...java中如果Integer不是new出Integer对象,而是直接赋值如:
Integer b1 = 12;
Integer b2 = 12;
这种情况是在常量池中开辟出同一个空间来存储12,所以b1和b2都指向12,如下图所示:
接下来说说,Integer的缓冲范围,因为不是在堆区new一个对象,那么在常量池中就必须对其的大小范围做出一个规定,
有一个规范叫JSL(Java Language Specification,java语言规范)对Integer的缓冲做了约束,规定其范围为:(-128-127)之间,如下JDK源码:
那么如果超出范围会怎样呢?再看其JDK源码:
如果超出了范围,会从堆区new一个Integer对象来存放值。
其实有上图第二行代码:static final int low = -128;规定了下线为-128,但是最大范围没有确定下来,这个设计是方便优化或扩展JVM来预留的。
固定了缓冲的下限,但是上限可以通过设置JDK的AutoBoxCacheMax参数调整。如下JDK源码中的注释也给出了相关说明:
好了,那么有了上面的原理剖析,下面的几个例子也就不难理解了:
Integer a1 = new Integer(12); Integer a2 = new Integer(12); Integer b1 = -129; Integer b2 = -129; Integer c1 = 128; Integer c2 = -128; System.out.println(a1 == a2); //false System.out.println(b1==b2); //false System.out.println(c1 == c2); //false
总结:实际开发中遇见问题一定要查看源码,也要看英文注释,万变不离其宗!
-
jsp九大内置对象和四种属性范围介绍
2017-04-01 21:59:07四种范围介绍:在jsp页面中的对象,包括用户创建的对象(例如,javaBean对象)和JSP的隐含对象,都有一个范围属性。范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间内,...一般对象需要实例化才可以调用,而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
四种范围介绍:在jsp页面中的对象,包括用户创建的对象(例如,javaBean对象)和JSP的隐含对象,都有一个范围属性。范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间内,可以在多个页面中被访问。application对象在整个Web应用程序的生命周期中都可以被访问。
1,page范围
具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中。在这个范围内的对象,只能在创建对象的页面中访问。 可以调用pageContext这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象(pageContext对象还提供了访问 其他范围对象的getAttribute方法),pageContext对象本身也属于page范围。当Servlet类的_jspService()方 法执行完毕,属于page范围的对象的引用将被丢弃。page范围内的对象,在客户端每次请求JSP页面时创建,在页面向客户端发送回响应或请求被转发 (forward)到其他的资源后被删除。
例如:
<body> <%pageContext.setAttribute("page", "这是pageContext测试"); %> <%=pageContext.getAttribute("page") %> <jsp:forward page="two.jsp"></jsp:forward> </body>
在two.jsp接收页面的代码是:
<%=pageContext.getAttribute("page") %>
运行之后,结果显示null,这证明了page的范围只局限于当前页面,无论从服务端还是客户端跳转,都不会传递数据到另一个界面。
2,request范围
具有request范围的对象被绑定到javax.servlet.ServletRequest对象中,可以调用request这个隐含对象的 getAttribute()方法来访问具有这种范围类型的对象。在调用forward()方法转向的页面或者调用include()方法包含的页面中, 都可以访问这个范围内的对象。要注意的是,因为请求对象对于每一个客户请求都是不同的,所以对于每一个新的请求,都要重新创建和删除这个范围内的对象。 即request在经过服务器的跳转后,甚至服务器的多次跳转,我们都可以获取他设置的属性值,但是客户端跳转就不可以获取他的值了,举例说明:
在two.jsp接收页面的代码是:<% request.setAttribute("name", "明明"); %> <jsp:forward page="two.jsp"></jsp:forward>
<%=request.getAttribute("name") %>
运行代码之后,在two.jsp页面获取到了明明,这是服务端的跳转,那客户端的跳转呢?
将<jsp:forward page="two.jsp"></jsp:forward>
去掉加入<a href="two.jsp">跳转</a> 代码,点击跳转后,获取内容为null。
3,session范围
具有session范围的对象被绑定到javax.servlet.http.HttpSession对象中,可以调用session这个隐含对象的 getAttribute()方法来访问具有这种范围类型的对象。JSP容器为每一次会话,创建一个HttpSession对象,在会话期间,可以访问 session范围内的对象。 即无论客户端还是服务端跳转,都可以获取他的数据,只要浏览器不重启,这也是我们实际开发中用到最多的。
举例:
<%session.setAttribute("name", "这是session测试"); %> <a href="two.jsp">跳转</a> <%session.setAttribute("name", "这是session测试"); %> <jsp:forward page="two.jsp"></jsp:forward>
在two.jsp接收页面的代码是:
<%=session.getAttribute("name") %>
我们可以发现,无论客户端还是服务端跳转,设置的数据都可以在其他页面接收。
4,application范围
具有application范围的对象被绑定到javax.servlet.ServletContext中,可以调用application这个隐含对 象的getAttribute()方法来访问具有这种范围类型的对象。在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。这个也就是说,只要设置了属性,即使重新启动浏览器,都还可以获取属性值,除非重启服务器。这一范围不做举例。
对上述四中属性范围,实际开发中遇到最多的是request和session。一般来说,只对于同一个功能的属性的传递,使用request范围属性。那么对于session范围来说,主要还是用于登陆上面。
上面四种属性范围,实际上四种属性范围都是通过pageContext设置的。在pageContext中,setAttribute()方式实际上被重载过:
1,public abstract void setAttribute(java.lang.String name, java.lang.Object value), 2,public abstract void setAttribute(java.lang.String name,java.lang.Object value,int scope)
第二种方法相比第一个方法多了一个参数(int scope),实际上这个参数就是指定属性范围的参数。
1,APPLICATION_SCOPE,2,PAGE_SCOPE,3,SESSION_SCOPE,4,REQUEST_SCOPE
也就是说,通过这个方法,我们可以设置四种属性范围,这也就是说,我们可以使用pageContext来完成上面四种属性的范围设定。
例如,我们用session时可以这样写:
<%@page contentType="text/html; charset=utf-8"%> <% pageContext.setAttribute("name","熊九天",PageContext.SESSION_SCOPE); %> <a href="two.jsp">跳转</a>
-
Socket.io 的发送对象范围
2016-06-23 16:36:50向当前客户端发送事件 socket.emit('login', { numUsers: numUsers }); 广播(不包含当前客户端) socket.broadcast.emit('new message', { username: socket.username, message: data ...io.socke向当前客户端发送事件
socket.emit('login', { numUsers: numUsers });
广播(不包含当前客户端)
socket.broadcast.emit('new message', { username: socket.username, message: data });
广播(且包含当前客户端)
io.sockets.emit('message', "this is a test");
在房间广播(不包含当前客户端)
socket.broadcast.to('game').emit('message', 'nice game');
在房间广播(包含当前客户端)
io.sockets.in('game').emit('message', 'cool game');
发送给指定客户端
io.sockets.sockets[socketid].emit('message', 'for your eyes only');
就可以向一个特定用户推送消息,但是如何获得这个socketId,就是生成一个哈希数组,key为username,值为socket.id,这样就可以通过用户名获取对应的id,进而可以向特定client推送消息。
-
JSP基础知识(application和内置对象的作用范围)
2017-09-11 18:38:051.JSP内置对象application application类似于系统的"全局变量",用于实现用户之间的数据共享 application对象的常用方法: void setAttribute(String key,Object value):以键/值的方式,将一个对象的值... -
jsp之九大内置对象与四大域对象
2017-03-31 15:15:10一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此在设计jsp时,在jsp... -
9大内置对象及四种范围对象
2019-06-03 09:26:28java Web9大内置对象以及四种范围对象 9个内置对象 out request response session application config exception page pageContext 从小到大 pageContext JSP页面容器 -->当前页面有效 (有的资料也称为page... -
page,request,session,application对象范围
2012-02-18 23:57:30在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性。范围定义了在什么时间内, 在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间内,可以在多个页面... -
在jsp中九大内置对象的pageContext,request,session和application四个对象的作用范围
2018-10-08 15:55:28application的作用范围 编辑一个实验类jsp文件,applicationDemo1.jsp 使用application设定两个属性:userName和userPwd,然后使用application的getAttribute的方法获取数据 主要代码如下 &lt;% ... -
JSP九大内置对象和四种属性范围解读
2015-07-14 18:27:52本文首先主要讲解了JSP中四种属性范围的概念、用法与实例。然后在这个基础之上又引入了九大内置对象,并对这几大内置对象一个一个的进行分析的解读。内容很详细,例子都附有代码和运行的结果截图。 -
JavaWeb中四大域对象及作用范围
2018-04-21 19:46:01JavaWeb的四大作用域为:page,request,session,...对page对象的引用通常存储在pageContext对象中。 2.request:作用范围是在当前请求中有效;生命周期是在service方法调用前由服务器创建,传入service方法。整个... -
JavaWeb中四大域对象的作用范围
2016-11-22 18:32:27JavaWeb中四大域对象的作用范围 -
SAP 中 过账 对于对象 RF_BELEG 2100,不存在FBN1的编号范围间隔 01
2021-01-20 16:37:20对于对象 RF_BELEG 2100,不存在FBN1的编号范围间隔 45 消息号 NR751 诊断 数据库表NRIV有提交类'C', 即 SAP 缺省设置只用在客户000。 步骤 创建定制下的此丢失编号范围间隔。 事务代码: FBN1 解决方法:... -
Servlet三大域对象,Jsp四大域对象
2018-08-24 11:58:38Servlet三大域对象,Jsp四大域对象 域对象的作用:保存数据,获取数据,共享数据. Servlet三大域对象 对象名称 对象的类型 request HttpServletRequest session HttpSession application ... -
PostGIS特殊函数 ☞ 根据BOX3D查询某一空间范围内的对象
2018-07-19 12:01:39注意:先装PostGis插件,才能使PostGreSql数据库支持空间对象数据类型 四、BOX3D用法 PostGIS函数目录官网地址: Chapter 14. PostGIS Special ... -
一:JSP九种内置对象的使用范围 jsp有哪些内置对象和作用分别是什么以及每个对象的类是什么
2018-03-04 08:36:332、HttpServletResponse的response对象作用:代表响应对象,用来向客户端发送数据。3、JspWriter的 out 对象作用:主要用于向客户端发送数据。其中JspWriter是out的基类。4、HttpSession 的session 对... -
使用EL访问作用域范围的隐含对象
2017-03-02 16:31:57随时随地阅读更多技术实战干货,获取项目源码、学习资料...在EL中提供了四个用于访问作用域范围的隐含对象,即pageScope、requestScope、sessionScope和applicationScope. pageScope隐含对象用于返回包含page(页面)... -
javaweb:域对象的属性操作setAttribute(),getAttribute()及其作用范围
2019-03-02 11:17:38域对象的属性操作和属性相关的方法方法介绍举例 和属性相关的方法 方法介绍 Object getAttribute(String name) 获取指定的属性 Enumeration getAttributeNames(); 获取所有名字属性组成的Enumeration对象。 ... -
关于编号范围对象
2013-12-28 21:38:25编号范围对象信息,存储于以下相关表:TNRO、TNROT、NRIV ABAP程序生成NO.Range,需要使用的系统function如下: 初始创建/更新NO.Range OBJECT: NUMBER_RANGE_OBJECT_INIT NUMBER_RANGE_OBJECT_UPDATE NUMBER_... -
面试之JSP9大隐视对象中四个作用域的大小与作用范围
2018-03-01 17:01:02JSP9大隐视对象中四个作用域的大小与作用范围 作用域大小:四个作用域从大到小:appliaction>session>request>page 作用范围: application:全局作用范围,整个应用程序共享.生命周期为:应用... -
JAVA 面向对象 类 对象 封装
2021-05-06 15:58:57面向对象概念 面向对象其实是一种编程思想,通过它可以把生活中复杂的事情变得简单化,从原来的执行者变成了指挥者。 面向对象是基于面向过程而言的。 面向过程强调的是过程,比如: 打开冰箱门 2. 把大象放进去 3. ... -
JSP 九大内置对象及四个作用域详解
2019-01-18 10:29:13JSP中一共预先定义了9个内置对象:内置对象,又叫做隐含对象,不需要预先声明就可以在脚本代码和表达式中随意使用 request、response、session、application、out、pagecontext、config、page、exception ... -
CAN笔记(18) 对象字典
2019-09-11 10:00:44对象字典OD概述、通讯对象子协议区、制造商特定子协议区、标准化设备子协议区 -
java面向对象
2018-08-21 16:51:59包括面向对象概念、类与对象的关系、封装、构造函数、this关键字、static关键字、单例设计模式、继承、多态、内部类、异常、包等java基础知识。 1、面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是... -
谈谈 Integer 的值缓存范围和对象大小
2019-04-12 20:45:57int 是我们常说的整形数字,是 Java...Java 语言虽然号称一切都是对象,但原始数据类型是例外。 关于 Integer 的值缓存,这涉及 Java 5 中另一个改进。构建 Integer 对象的传统方式是直接调用构造器,直接 new 一个... -
Java类和对象 详解(一)
2016-10-06 20:48:02一、面向对象简述面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计... -
java对象的销毁详解
2021-03-01 07:52:24对象使用完之后需要对其进行清除,下面的文章内容就对这个方面的知识进行了较为详细的介绍,一起来看看这个方面的知识吧。前面讲到了清除,对象的清除指的就是释放对象占用的内存。在创建对象的时候,用户必须使用... -
面向对象与面向过程的本质的区别
2018-01-10 20:19:04前言: 如果你很想搞明白面向对象是什么,面向过程是什么,或者说二者之间的区别是什么,那么就花费一点...面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个 -
JAVA中销毁一个对象的方法
2021-02-26 09:06:13方法一:垃圾回收器垃圾回收器是Java平台中用的最频繁的一种对象销毁方法。垃圾回收器会全程侦测Java应用程序的运行情况。当反先有些对象成为垃圾时,垃圾回收器就会销毁这些对象,并释放这些对象所占用的内存空间。... -
Servlet的四大域对象
2018-09-06 21:54:22我们在开发javaweb项目的时候,经常会遇到jsp和Servet之间互相传值,既然有传值,就要有对象来传,这里先说Servlet的三大域对象,request,session,application他们共同的特点都是通过键值对传值,这样也很好理解,...