如何创建JavaBean
1个回答
展开全部
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上下文范围内的。
因为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上下文范围内的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询