首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

【转】创办JavaBean的几种方法

2013-01-07 
【转】创建JavaBean的几种方法创建一个Bean的方法有很多种,并且在完成JavaBean的创建后,可以将Bean的实例保

【转】创建JavaBean的几种方法

创建一个Bean的方法有很多种,并且在完成JavaBean的创建后,可以将Bean的实例保存在标准的JSP上下文范围(page、request、session和application)中。通常情况下,可以使用以下几种方法:

  • 在Action中使用Java代码来创建JavaBean。
  • 在JSP中使用Java脚本来创建JavaBean。
  • 使用标准的<jsp:useBean>标记来创建JavaBean。
  • 使用Struts的<bean:define>标记来创建JavaBean。
  • 使用其他Struts标记来创建JavaBean。

    1.在Action中使用Java代码来创建JavaBean

    因为JSP页面是要被编译为Servlet的,而Action类是被Struts的控制Servlet所调用的,所以在Action类中可以方便地将所创建的Bean对象的实例保存在标准的JSP上下文范围中。需要注意的是,在Action中创建的Bean只能保存在request、session和application范围中,而不能保存在page范围中。

    (1)request范围

    定义在request范围内的对象在整个用户请示的范围内有效,所有后续的Action类以及JSP页面都可以访问到该对象,它主要用来保存页面中需要使用到的相关对象。示例代码如下:

    Customer customer = new Customer();

    request.setAttribute("cust", customer);//属性名cust是JSP页面中访问这个customer的标识。

    (2)session范围

    保存在session范围内的对象在整个session有效的期间都可以被访问到,它主要用来保存与某个特定的登录用户相关的对象。示例代码如下:

    User user = new User();

    HttpSession session = request.getSession();

    session.setAttribute("user", user);

    (3)application范围

    通常情况下,application范围内的Bean都是Servlet启动的时候在init()方法中初始化的。但也可以在Action中创建一个JavaBean,然后将其保存在application范围内。示例代码如下:

    Foo foo = new Foo();

    servlet.getServletContext().setAttribute("foo", foo);

    2.在JSP中使用Java脚本创建JavaBean(不提倡)

    (1)page范围

    将Foo对象的实例foo保存到page范围内,并且命名为foo,代码如下:

    <%

    Foo foo = new Foo();

    pageContext.setAttribute("foo", foo, PageContext.PAGE_SCOPE);

    %>

    其他三个范围类似,只需将PageContext.PAGE_SCOPE改为PageContext.REQUEST_SCOPE、PageContext.SESSION_SCOPE或PageContext.APPLICATION_SCOPE即可。

    再次强调,在基于Struts的web应用中,不要将任何业务逻辑方法置于JSP页面中,而要将业务逻辑处理方法限制在Action类中。

    3.使用标准的<jsp:useBean>标记创建JavaBean

    <jsp:useBean>可以用来创建一个新的JavaBean,也可以定义一个新的引用指向已经存在的JavaBean。

    当需要使用其他的标准JSP标记(如<jsp:getProperty>或<jsp:setProperty>)时,必须先使用<jsp:useBean>标记来创建JavaBean的实例或者引用已经存在的JavaBean的实例。

    4.使用Struts的<bean:define>标记来创建JavaBean

    <bean:define>可以通过复制其他JavaBean或者JavaBean的属性来在任意的上下文范围内创建新的JavaBean。

    (1)定义一个String常量

    <bean:define id="foo" value="This is a new String"/>

    <bean:define id="bar" value='<%="hello, "+user.getName() %>'/>

    (2)复制一个已经存在的JavaBean

    创建一个新的JavaBean的引用及创建一个新的JavaBean的方法如下:

    <bean:define id="foo" name="bar"/>

    <bean:define id="baz" name="bop" type="com.mycompany.MyBopClass"/>

    (3)复制一个已经存在的JavaBean的属性

    使用一个已经存在的JavaBean来创建一个新的属性的引用,可使用类似下面的方式:

    <bean:define id="foo" name="bar" property="baz" scope="request" toScope="session"/>

    <bean:define id="bop" name="user" property="role[3].name"/>

    注意,如果没有指定toScope属性,那么创建的JavaBean都是被绑定在page上下文范围内的。

    5.其他Struts复制标记(请参考相关文档)

热点排行