zoukankan      html  css  js  c++  java
  • 共享bean

    到此为止,对于jsp:useBean创建的对象,我们都将它们看作是_jspService方法中的局部变量来处理(jspService由页面生成的servlet的service方法调用)。虽然bean的确绑定到
    局部变量,但这并非惟一的行为.它们还存储在4个不同的位置—依jsp:useBean的可选属性scope的值而定。

    使用scope时,系统首先检查指定的位置是否存在指定名称的bean。仅当系统找不到现有的bean时,才会创建新的bean。这种行为使得servlet可以用下面的方式处理复杂的用户请求:建立bean,将它们存储在3个标准共享位置中的某个位置(请求、会话或servlet的上下文),然后将清求转发到几个适当JSP页面中的某个页面,提供适合于请求数据的结果。
    如下所述,scope属性有4个可选值:Page(默认),request, session和 application.

    .<jsp:useBear  ...scope="page"/>
    这是默认的值:完全省略scope属性也会得到相同的行为。page作用域表示:在处理当前请求期间,除了要将bean对象绑定到局部变量外,还应该将它放在PageContext对象中。将对象存储在此处表示,servlet可以通过调用预定义变量pageContext的getAttribute方法访它。由于每个页面和每个请求都有不同的PageContext对象,所以scope=page(或省略scope时表示不共享}bean,也就是针对每个请求都创建新的bean.

    同理,其他三个属性值也可以类似理解。

    request共享:bean

    package cn.donghaua.bean;

    public class BakedBean {

    private String level="half-baked";
    private String goesWith = "hot dog";
    public String getLevel() {
    return level;
    }
    public void setLevel(String level) {
    this.level = level;
    }
    public String getGoesWith() {
    return goesWith;
    }
    public void setGoesWith(String goesWith) {
    this.goesWith = goesWith;
    }

    }

    主页面Baked.jsp

    <body>
    <H1>first requst page</H1>
    <jsp:useBean id="requestBean" class="cn.donghaua.bean.BakedBean" scope="request"/>
    <!-- <jsp:setProperty property="*" name="requestBean"/> -->
    first page bakedLevel:
    <jsp:getProperty property="level" name="requestBean"/><br>
    first page goesWith:
    <jsp:getProperty property="goesWith" name="requestBean"/><br>
    <%= request.getRemoteHost() %><br>
    <jsp:include page="/Baked_In.jsp"/>
    </body>

    被包含页面Baked_In.jsp;

    this is the included page:<br>
    <jsp:useBean id="requestBean" class="cn.donghaua.bean.BakedBean" scope="request"/>
    <i>include level:</i>
    <jsp:getProperty property="level" name="requestBean"/><br>
    <i>include goesWith:</i>
    <jsp:getProperty property="goesWith" name="requestBean"/>

    输出:

    first requst page

    first page bakedLevel: half-baked
    first page goesWith: hot dog
    127.0.0.1
    this is the included page:
    include level: half-baked
    include goesWith: hot dog 

    同理session及其他的属性也可以共享bean

  • 相关阅读:
    hdu2138(求素数)
    hdu2104
    poj1664(放苹果)
    数塔问题给你有哪些启示?
    汉诺塔问题(1)
    算法的力量(转李开复)
    最长子序列问题之系列一
    forward和redirect的区别
    group by 和having
    java中的多态三要素是什么?
  • 原文地址:https://www.cnblogs.com/daxiong225/p/4778348.html
Copyright © 2011-2022 走看看