精华内容
下载资源
问答
  • JSP中4个对象的范围

    2012-10-11 11:06:41
    page范围内的对象只能在创建对象的页面中访问,在page范围内可以使用pageContext对象的setAttribute()和getAttribute()方法来访问具有这种范围类型的对象,page范围内的对象在客户端每次请求JSP页面时创建,在服务器...
    
    

    1.page范围

       page范围指单一JSP页面的范围。page范围内的对象只能在创建对象的页面中访问,在page范围内可以使用pageContext对象的setAttribute()和getAttribute()方法来访问具有这种范围类型的对象,page范围内的对象在客户端每次请求JSP页面时创建,在服务器发送响应或请求转发到其他的页面货资源后失效。

    2.request对象范围

       相对于page范围内的对象与pageContext绑定在一起,request范围内的对象则是与客户端用户的请求绑定在一起,request范围内的对象在页面转发或包含中有效,在该范围内的对象可以通过调用request对象的serAttribute()与getAttribute()方法找到,同时在调用forward()方法转向的页面或者调用inclued()方法包含的页面时,都可以访问 request范围内的对象,需要注意的是,因为请求对象对于每次客户端的的用户请求都是不同的,所以对于任何一次新的请求,都有重新创建该范围内的对象,而当请求结束后,创建的对象也随之失效。

    3.session对象范围

       JSP容器为每一次会话创建一个session对象,在会话期间,只要将对象绑定到session中,对象的范围就为session。在回话的有效期间,都可以访问session范围内的对象

    4.application对象范围

       相对于session范围针对一个会话,application的范围则针对整个Web应用程序,即当服务器启动后就会创建一个application对象,被所有用户共享,当具有application范围的对象被绑定到JSP的application对象中时,在Web应用程序的运行期间,所以的用户都可以访问application范围内的对象,其范围最大。

    展开全文
  • 范围和生命周期 理解我们目前已经讨论过的不同范围和生命周期类是很重要的。不正确的使用它们会导致严重的并发...因此SqlSessionFactoryBuilder实例最佳的范围是方法范围(也就是本地方法变量)。你可以从用SqlSessio

    范围和生命周期

    理解我们目前已经讨论过的不同范围和生命周期类是很重要的。不正确的使用它们会导致严重的并发问题。

    SqlSessionFactoryBuilder

    这个类可以被实例化,使用和丢弃,一旦你创建了SqlSessionFactory后,这个类就不需要存在了。因此SqlSessionFactoryBuilder实例最佳的范围是方法范围(也就是本地方法变量)。你可以从用SqlSessionFactoryBuilder类创建多个SqlSessionFactory实例,但是最好的方式是不需要保持它一直存在所有XML解析资源,因为还有更重要的事情要做。

    SqlSessionFactory

    一旦被创建,SqlSessionFactory应该在你的应用执行期间都存在。没有理由来处理或重新创建它。使用SqlSessionFactory的最佳实践是在应用运行期间不要重复创建多次。这样的操作将被视为是非常糟糕的。因此SqlSessionFactory的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。然而这两种方法都不认为是最佳实践。这样的话,你就可以考虑依赖注入,比用Google Guice或Spring。这样的框架允许你创建支持程序类管理单例SqlSessionFactory的生命周期。

    SqlSession

    每个线程都应该有自己的SqlSession实例。SqlSession的实例不能被共享,也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的应用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Servlet架构中的HttpSession。如果你现在正用任意的web框架,要考虑SqlSession放在一个和HTTP请求对象相似的范围内,换句话说,基于收到的HTTP请求,你可以打开一个SqlSession,然后返回响应,对其进行关闭。关闭Seesion很重要,你应该确保使用finally块来关闭它。下面一段代码确保SqlSession关闭的基本模式:


    Mapper实例

    映射器是你创建绑定映射语句的接口,映射器接口的实例可以从SqlSession中获得。例如:

    SqlSession session = sqlSessionFactory.openSession();

    try{

    BlogMapper mapper = session.getMapper(映射器接口类名.class);

    //do work

    }finally{

    sesson.close();

    }

    那么从技术上来说,当被请求时,任意映射器实例的最宽范围和SqlSession是相同的。然而,映射器实例的最佳范围是方法范围。


    展开全文
  • EL表达式隐式对象的范围的变量:

    千次阅读 2016-02-17 17:43:51
    该对象允许访问请求对象的属性。例如,EL 表达式可以使用 ${requestScope. objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope. objectName. attributeName} 访问对象的属性。 ...

    转自:http://baike.baidu.com/link?url=ce9tkAGJpRIQ19wW0n10nFe-zv3WENsXUNYKgbWxhK2MYt4Cy_EJ8BHYn3EWtIiGmHns0e1fJUPnlrWcaWZPZq

    http://wenku.baidu.com/link?url=pB7Dr2TXD5alM-ARVvApyFD9T1dzWcHRvdZFNUfmLwkfXeTIfSEMRQJvkoCQ9Hu77WrkKLPUx9hj9miKz-IEt0Y8nN8K9-Q7LEZEYQnotrq


    除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页面:
    术语
    定义
    pageScope
    将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope .objectName. attributeName} 访问对象的属性。
    requestScope
    将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL 表达式可以使用 ${requestScope. objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope. objectName. attributeName} 访问对象的属性。
    sessionScope
    将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如:
    ${sessionScope. name}
    applicationScope
    将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。


    展开全文
  • JSP内置对象的范围和属性-初学必看

    千次阅读 2007-06-02 02:35:00
    JSP内置对象的范围和属性关键词: JSP内置对象 ●●●范围( Scope ) 有些 JSP 程序员会将 request、session、application 和 pageContext 归为一类,原因在于:它们皆能借助 setAttribute( )和 getAttribute(
    JSP内置对象的范围和属性

    关键词JSP内置对象                                          

     

    ●●●范围( Scope )
          有些 JSP 程序员会将 requestsessionapplication pageContext 归为一类,原因在于:它们皆能借助 setAttribute( ) getAttribute( )来设定和取得其属性(Attribute),通过这两种方法来做到数据分享
          我们先来看下面这段小程序:
    Page1.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <html>
    <head>
     <title>Page1.jsp</title>
    </head>
    <body>
    </br>
    <%   
         application.setAttribute("Name","mike");      
         application.setAttribute("Password","browser");
    %>
    <jsp:forward page="Page2.jsp"/>

     

    </body>
    </html>
          在这个程序中,我们设定两个属性:NamePassword,其值为:mikebrowser。然后再转交(forward)Page2.jsp。我只要在Page2.jsp当中加入 application.getAttribute( ),就能取得在Page1.jsp设定的数据。
    Page2.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <html>
    <head>
     <title>Page2.jsp</title>
    </head>
    <body>
    <%
         String Name = (String) application.getAttribute("Name");
         String Password = (String) application.getAttribute("Password");
         out.println("Name = "+Name);
         out.println("Password = "+ Password);

     

    %>
    </body>
    </html>
          执行结果为:
          Name=mike Password=browser
          由这个例子可以看出,JSP提供给开发人员一项传递数据的机制,那就是利用setAttribute( )getAttribute( )方法,如同Page1.jspPage2.jsp的做法。
          在上面Page1.jspPage2.jsp的程序当中,是将数据存入到 application 对象之中。除了application之外,还有requestpageContext session,也都可以设定和取得属性值,那它们之间有什么分别吗?
          它们之间最大的差别在于范围(Scope)不一样,这个概念有点像 CC++中的全局变量和局部变量的概念。接下来就介绍JSP的范围。
          JSP有四种范围,分别为PageRequestSessionApplication

     

         1JSP Scope—Page
          所谓的 Page,指的是单单一页JSP Page的范围。若要将数据存入 Page 范围时,可以用pageContext对象的 setAttribute()方法;若要取得Page范围的数据时,可以使用 pageContext对象的getAttribute( )方法。我们将之前的范例做小幅度的修改,将application改为 pageContext
    PageScope1.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <html>
    <head>
     <title>PageScope1.jsp</title>
    </head>
    <body>
    <h2>Page 范围 - pageContext</h2>
    <%   
         pageContext.setAttribute("Name","mike");      
         pageContext.setAttribute("Password","browser");
    %>
    <jsp:forward page="PageScope2.jsp"/>
    </body>
    </html>
    PageScope2.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <html>
    <head>
     <title>CH5 - PageScope2.jsp</title>
    </head>
    <body>
    <h2>Page 范围 - pageContext</h2>
    </br>
    <%   
         String Name = (String)pageContext.getAttribute("Name");
         String Password = (String)pageContext.getAttribute("Password");
         out.println("Name = "+Name);
         out.println("Password = "+ Password);
    %>
    </body>
    </html>
          执行结果为:
          Name=null Password=null
          这个范例程序和之前有点类似,只是之前的程序是 application,现在改为 pageContext,但是结果却大不相同,PageScope2.jsp 根本无法取得 PageScope1.jsp 设定的 Name Password 值,因为在PageScope1.jsp当中,是把NamePassword 的属性范围设为Page,所以Name Password 值只能PageScope1.jsp当中取得。若修改PageScope1.jsp的程序,重新命名为PageScope3.jsp,如下:
    PageScope3.jsp
    <%@ page contentType="text/html;charset=GB2312" %>

     

    <html>
    <head>
     <title>CH5 - PageScope3.jsp</title>
    </head>
    <body>
    <h2>Page 范围 - pageContext</h2>
    </br>
    <%   
         pageContext.setAttribute("Name","mike");      
         pageContext.setAttribute("Password","browser");
         
         String Name = (String)pageContext.getAttribute("Name");    
         String Password = (String)pageContext.getAttribute("Password"); 
         
         out.println("Name = "+Name);    
         out.println("Password = "+ Password);
    %>
    </body>
    </html>
          PageScope3.jsp的执行结果为:
          Name=mike Password=browser
          经过修改后的程序,Name Password 的值就能顺利显示出来。这个范例主要用来说明一个概念:若数据设为Page范围时,数据只能在同一个 JSP网页上取得,其他 JSP网页却无法取得该数据。

     

         2JSP Scope—Request
          Request 的范围是指在JSP网页发出请求到另一个JSP网页之间,随后这个属性就失效。设定 Request 的范围时可利用 request 对象中的setAttribute()getAttribute()。我们再来看下列这个范例:
    RequestScope1.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <html>
    <head>
     <title>CH5 - RequestScope1.jsp</title>
    </head>
    <body>
    <h2>Request 范围 - request</h2>
    <%   
         request.setAttribute("Name","mike");     
         request.setAttribute("Password","browser");
    %>
    <jsp:forward page="RequestScope2.jsp"/>
    </body>
    </html>
    RequestScope2.jsp
    <%@ page contentType="text/html;charset=GB2312" %>
    <html>
    <head>
     <title>RequestScope2.jsp</title>
    </head>
    <body>
    <h2>Request 范围 - request</h2>
    <%   
         String Name = (String) request.getAttribute("Name"); 
         String Password = (String) request.getAttribute("Password");    
         out.println("Name = "+Name);    
         out.println("Password = "+ Password);    
    %>
    </body>
    </html>
          执行结果为:
          Name=mike Password=browser
          RequestScope1.jsp转向到RequestScope2.jsp时, RequestScope2.jsp也能取得RequestScope1.jsp设定的NamePassword值。不过其他的JSP网页无法得到NamePassword值,除非它们也和RequestScope1.jsp有请求的关系。
          除了利用转向(forward)的方法可以存取 request 对象的数据之外,还能使用包含(include)的方法。
          假若我将RequestScope1.jsp
          <jsp:forward page="RequestScope2.jsp"/>
          改为
          <jsp:include page="RequestScope2.jsp" flush="true"/>
          执行结果还是一样的。表示使用<jsp:include>标签所包含进来的网页,同样也可以取得Request范围的数据。
          3JSP ScopeSessionApplication
          下表介绍了最后两种范围:SessionApplication

     

    ●●●属性(Attribute)
          下表列出了一般储存和取得属性的方法,以下 pageContextrequestsession application皆可使用(注意:pageContext并无getAttributeNames( )方法)。

     

          使 Object getAttribute(String name)取得 name ,它 java.lang.Object,因此,我们还必须根据name属性值的类型做转换类型(Casting)的工作。
          例如,若要取得String类型的Name属性时:
          String Name = (String)Sessio.getAttribute("Name");
          若要取得Integer类型的Year属性时:

     

          Integer Year = (Integer)session.getAttribute("Year");
          假若我们的数据要设为Page范围时,则只需要:
          pageContext.setAttribute("Year", new Integer(2001));
          若要为 RequestSession Application 时,就分别存入 requestsession application对象之中,如下:
          request.setAttribute("Month", new Integer(12) );
          session.setAttribute("Day", new Integer(27) );
          application.setAttribute("Times", new Integer(10));
    展开全文
  • ●●●范围( Scope )  有些 JSP 程序员会将 request、session、application 和 pageContext 归为一类,原因在于:它们皆能借助 setAttribute( )和 getAttribute( )来设定和取得其属性(Attribute),...
  • 【以下转载自MyBatis3.2.3官方文档】 理解我们目前已经讨论过不同范围和生命周期类是很重要。 不正确使用它们会导 致严重并发问题。... 因此 SqlSessionFactoryBuilder 实例最佳范围是方法范围
  • JSP 对象的作用范围

    2015-04-13 20:12:36
     所谓的page范围指单一的JSP页面范围,page范围内的对象只能在创建对象的页面中访问。在page范围内可以使用pageContext对象的setAttribute()和getAttribute()方法来访问具有这种范围类型的对象。page范围内的对象在
  • 内置对象的作用范围是指每个内置对象的某个实例在多长时间和多大的范围中有效,即在什么样的范围内可以有效地访问同一个对象实例。 在javax.servlet.jsp.PageContext的类中定义了4个常量来指定内置对象的作用范围:...
  • JSP对象的有效范围

    千次阅读 2013-06-11 23:31:41
    转载自:http://blog.sina.com.cn/s/blog_3f4052100100092e.htmlJSP页面在处理请求时,可以访问JAVA对象,这些对象包括用户创建的对象(例如,JavaBean对象)和JSP隐含对象,这些对象按照作用范围和持续时间不同,...
  • 四大域对象作用范围: pageContext < httpServletRequest < httpSession < servletContext pageContext 作用范围:当前jsp页面; 作用:获取九大内置对象; 常用方法:getAttribute()、setAttribute...
  • 对象范围

    2008-09-24 11:59:00
    这个范围对象,只能在创建对象的页面中访问。当Servlet类的_jspService()执行完毕,属于page范围对象的引用将被丢弃。page范围内的对象,在客户端每次请求JSP页面时创建,在页面向客户端送回响应或请求被转发到...
  • 4.1.4 对象身份的范围

    2010-05-05 22:52:00
    作为开发人员,我们使用==来识别一个对象的身份。因此,如果一个对象更改了状态以后,它的身份是否仍然和原来一样?在分层的程序当中,可能并不如此简单。 为了更深入探讨这个问题,需要明白在java对象身份和数据库...
  • Servlet内置对象的作用范围及访问方法(2006-12-29 20:23:59)     Servlet内置对象的作用范围及访问方法 HttpServletRequest,HttpServletResponse:这两个属性的作用范围最小。 时间上:...
  • spirng中bean对象的作用范围 1:在默认情况下,Spring中管理的类都是单例的(singleton) 2:常用scop 1、singleton单例,第一次创建之后,以后每次都拿同一个对象 2、prototype多例,每次请求重新创建对象 ...
  • JavaWeb中四大域对象的作用范围

    万次阅读 2016-11-22 18:32:27
    JavaWeb中四大域对象的作用范围
  • DWR对象作用范围

    2012-08-15 22:47:43
    通过前台客户端也就是js脚本,去访问这个后台的对象,这个后台对象必然有一个作用范围,为什么这么说?因为我们在开发web项目时候,http协议是无状态,对于无状态协议,我们如果想保存状态信息,怎么办?这...
  • Servlet三大域对象的应用 request、session、application(ServletContext) ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。 request,一个用户可有多个;session,一个用户一...
  • JSP中内置对象及其有效范围

    千次阅读 2017-06-26 15:56:38
    JSP中内置对象及其有效范围: 1、JSP中包含大量内置对象和可扩展组件对象,可以说,对象是JSP编程技术精髓。内置对象是不需要声明,就可以直接在JSP中使用的对象。 2、在JSP代码段中,可以利用内置对象...
  • 在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP隐含对象,都有一个范围属性。范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间内,可以在多个...
  • 在jsp页面中的对象,包括用户创建的对象(例如,javaBean对象)和JSP隐含对象,都有一个范围属性。范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间内,可以在多个页面中...
  • jsp四个域对象的作用范围

    千次阅读 2018-04-01 19:48:04
    jsp内置对象:内置对象是在JSP页面中无需创建就可以直接使用变量。在JSP中一共有9个这样的对象!它们分别是:l out(JspWriter);l config(ServletConfig);l page(当前JSP真身类型);l pageContext...
  • 作用范围也可以称为作用域,通常来说,一段程序代码中所用到名字并不总是有效/可用,而限定这个名字可用性代码范围就是这个名字作用域。 Bean作用域类型 1、singleton:单例(默认值) 2、prototype:...
  • 9大内置对象及四种范围对象

    千次阅读 2019-06-03 09:26:28
    java Web9大内置对象以及四种范围对象 9个内置对象 out request response session application config exception page pageContext 从小到大 pageContext JSP页面容器 -->当前页面有效 (有资料也称为page...
  • 学习javaweb开发jsp的学习是基础,而且jsp四种内置对象的属性范围是整个web开发的核心操作,规定了属性的有效范围,为了方便以后的记忆和查询对于其属性范围作了以下饿总结。应该有不规范或者不够全面的地方,希望...
  • JAVAweb中四大域对象的作用范围

    千次阅读 2018-05-04 10:35:41
    PageContext域:作用范围是整个JSP页面,是四大作用域中最小一个;生命周期是当对JSP请求时开始,当响应结束时销毁。ServletRequest域:作用范围是整个请求链(请求转发也存在);生命周期是在service方法调用前...
  • 四种范围对象的作用域

    千次阅读 2018-11-21 16:37:53
    pageContext:数据只在当前自身页面有效; request:数据在一次请求中有效;...以上四种防卫对象都存在以下方法: public void setAttribute(String name,Object o) , 设置属性名和属性值; ...
  • JavaWeb四个域对象作用范围

    千次阅读 2018-04-06 16:08:05
    JavaWeb四个域对象作用范围一、pageContext作用范围:仅限于当前jsp页面二、request作用范围:仅限于同一个请求,主要用于请求转发三、session作用范围:限于一次会话,在servlet中可以通过request对象获取四、...
  • jsp内置对象 使用范围和类型【说明】

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,479
精华内容 13,391
关键字:

对象的范围