`
wangyanlong0107
  • 浏览: 480522 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】创建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复制标记(请参考相关文档)

分享到:
评论

相关推荐

    java面试题

    多线程几种实现方法,同步? 答:多线程有两种实现方法,一种是继承Thread类或者实现Runnable接口。同步就是在方法返回类型后面加上synchronized。 c#中的委托,事件是不是委托? 答:委托就是将方法作为一个参数...

    java基础题 很全面

    54. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 13 55. java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 14 56....

    Struts in Action中文版(PDF)

    关于此书 Struts 框架集合了几种相关的技术,使开发者可以创建易于构建、扩展和维护的基于标准的应用。 Struts 已经是全世界开发人员不管是新手还是老手的框架选择。 Struts in Action 一步步介绍了Struts 框架。 ...

    java 面试题 总结

    创建了几个String Object? 两个 28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ ...

    超级有影响力霸气的Java面试题大全文档

    创建了几个String Object? 两个 31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?  SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个...

    JAVA面试题最全集

    76.EJB有哪几种?区别是什么? 77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何进行版本控制? 81.UML中,类视图如何表示类中的继承与聚合? 82.客户端...

    最新Java面试宝典pdf版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    Java面试宝典2010版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 47、sleep() 和 wait() 有什么区别? 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 ...

    Java面试笔试资料大全

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    JAVA面试宝典2010

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    Java面试宝典-经典

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    java面试题大全(2012版)

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    Java面试宝典2012版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例...

    java面试宝典2012

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 32 47、sleep() 和 wait() 有什么区别? 33 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    Java面试宝典2012新版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    Java开发技术大全 电子版

    3.4.2创建方法体与return语句117 3.4.3局部变量和成员变量的区别119 3.4.4方法的访问权限121 3.5方法的调用121 3.5.1方法调用的形式121 3.5.2方法调用的参数123 3.5.3隐含参数this127 3.6构造方法128 3.6.1...

    Web服务构建Struts应用程序例程源码

    MVC 模式有好几种变异,不过它们都是基于相同的基础结构:应用程序的数据模型 (Model),显示层代码(View),以及程序控制逻辑( Controller) 是存在其中的独立但能相互间通信的组件。模型组件描述并处理应用程序...

    Java-Web程序设计(PPT).pptx

    Servlet技术 4.JavaBean和标准动作 6. Servlet技术进阶 8. 会话跟踪技术进阶 7. 会话跟踪技术 8 9 9.EL表达式 10 10.JSTL标签库 Java-Web程序设计(PPT)全文共389页,当前为第2页。 本章内容 Web 应用程序简介 HTTP ...

Global site tag (gtag.js) - Google Analytics