JavaBean的使用

1.使用JavaBean:useBean操作

  JSP提供了动作标签useBean其作用是在页面上使用JavaBean。

useBean标签的一般格式为:

<jsp:useBean id="bean's name" class="bean's class" scope="bean's scope"/>
或者
<jsp:useBean id="bean's name" class="bean's class" scope="bean's scope">
</jsp:useBean>

下面的一个例子演示通过<jsp:useBean>标签使用一个JavaBean,程序首先定义一个Java类BeanItem.java

BeanItem.java
 1 package samples.javabean;
 2 
 3 public class BeanItem {
 4     String name;
 5     boolean truth;
 6     public BeanItem(){
 7         super();
 8     }
 9     public String getName() {
10         return name;
11     }
12     public void setName(String name) {
13         this.name = name;
14     }
15     public boolean isTruth() {
16         return truth;
17     }
18     public void setTruth(boolean truth) {
19         this.truth = truth;
20     }
21     
22 }

在创建一个jsp文件Ex7_1.jsp来将JavaBean实例化.

Ex7_1.jsp
 1 <%@ page language="java" contentType="text/html; charset=GB18030"
 2     pageEncoding="GB18030"%>
 3     <%@ page import="java.io.*" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 <font size="2">
12 <jsp:useBean id="item" class="samples.javabean.BeanItem" scope="page"></jsp:useBean>
13 <%--通过useBean标签初始化一个JavaBean --%>
14 <%
15     item.setName("Item");
16     item.setTruth(true);
17 %>
18 <%--调用JavaBean的getters方法 --%>
19     JavaBean的类:<%=item.getClass().getName() %><br>
20     JavaBean的Name属性:<%=item.getName() %><br>
21     JavaBean的Truth属性:<%=item.isTruth() %><br>
22 </font>
23 </body>
24 </html>

运行结果为:

 

2.获取和修改JavaBean属性:get/setProperty操作

  使用useBean标签创建JavaBean后,在JSP页面中可以采用<jsp:getProperty>和<jsp:setProperty>来获取和修改JavaBean的属性。

2.1getProperty标签

  标签"<jsp:getProperty>"的作用是获得属性值。这个标签能制定将要用到的Bean名称(从useBean的id字段得到)以及用户希望的其值的属性。

  

<jsp:getProperty name="bean name" property="property name"/>

  其中name属性代表了Bean的实力,Bean实力必须在前面用<jsp:useBean>标签定义,property属性代表了希望获得其值的那个property的名字.

2.2.seProperty标签

  标签"<jsp:setProperty>"的作用是设置属性值。这个标签将设置useBean标签初始化过的JavaBean的属性。

  它有三种格式:

<jsp:setProperty name="Name"  property="PropertyName" value="string"/><jsp:setProperty name="Name"  property="PropertyName" param="string"/><jsp:setProperty name="Name"  property="*" />

  其中name是初始化过的JavaBean的名字,Property是希望设置的属性的名字。

  注意:Value域和Param域不能同时使用,分别表示从一个字符串设置属性和从一个request的参数设置属性。

三种不同的setProperty的使用方法:

(1)使用表达式或字符串设置Bean的属性:

<jsp:setProperty name="Name"  property="PropertyName" value="string"/>

它将property域标识的bean属性设置为字符串string的值。

<jsp:setProperty name="Name"  property="PropertyName" value="<%=expression%>"/>

  或者使用JSP输出一个表达式的值,设置为bean属性。

  无论是字符串还是表达式,在jsp引擎中都处理为一个String类型的变量。但是JavaBean的域属性却不一定是String类型,例如一些包装类Integer、Double。将String类型的变量设置为域属性时,jsp引擎会尝试将String类型转换为相应类型,例如处理Integer类的时候,会试图调用Integer.parseInt(String s)方法。但是这些方法可能会发生NumberFormatException意外,例如将“34kk”的字符串转换为Integer类型的整数,会发生错误。

  下面的例子使用<jsp:getProperty>和<jsp:setProperty>接口获取和设置JavaBean的属性。这里仍然采用刚刚编写的BeanItem类,并且用字符串的形式设置属性。

Ex7_2.jsp
 1 <%@ page language="java" contentType="text/html; charset=GB18030"
 2     pageEncoding="GB18030"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <%--通过useBean标签初始化一个JavaBean。 --%>
11 <jsp:useBean id="item" class="samples.javabean.BeanItem" scope="page"></jsp:useBean>
12 <%--通过setProperty标签设置JavaBean的属性 --%>
13 <jsp:setProperty property="name" name="item" value="Item"/>
14 <jsp:setProperty property="truth" name="item" value="true"/>
15 <%--通过setProperty标签获取JavaBean的属性。 --%>
16     JavaBean的类:<%=item.getClass().getName() %><br>
17     JavaBean的Name属性:<jsp:getProperty property="name" name="item"/><br>
18     JavaBean的Truth属性:<jsp:getProperty property="truth" name="item"/><br>
19 </body>
20 </html>

运行结果为:

(2)使用request的参数设定bean的属性:

<jsp:setProperty name="Name" property="PropertyName" param="string"/>

  这种方式可以从request内置变量中取出string名字所标识的参数设置给JavaBean,此时不合法的参数可能导致抛出意外。

Ex7_3.jsp
 1 <%@ page language="java" contentType="text/html; charset=GB18030"
 2     pageEncoding="GB18030"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <%--通过useBean标签初始化一个JavaBean。 --%>
11 <jsp:useBean id="item" class="samples.javabean.BeanItem" scope="page"></jsp:useBean>
12 <%--通过setProperty标签设置JavaBean的属性 --%>
13 <jsp:setProperty property="name" name="item" param="_name_"/>
14 <jsp:setProperty property="truth" name="item" param="_truth_"/>
15 <%--通过setProperty标签获取JavaBean的属性。 --%>
16     JavaBean的类:<%=item.getClass().getName() %><br>
17     JavaBean的Name属性:<jsp:getProperty property="name" name="item"/><br>
18     JavaBean的Truth属性:<jsp:getProperty property="truth" name="item"/><br>
19 </body>
20 </html>

访问地址:http://localhost:8080/JSPExample/Ex7_3.jsp?_name_=Item&_truth_=true将参数_name_和_truth_传给setProperty标签,其运行结果为:

(3)从HTTP表单中获取bean的属性:

<jsp:setProperty name="Name" property="*"/>

注意:

  这里property域采用了通配符“*”。使用这种方法设置bena属性,要求表单的参数名字与bean的属性的名字一直。执行时jsp引擎会遍历表单所有的域,将符合的域设置为bean的属性,同时,jsp引擎还会自动尝试转换类型。

Ex7_4.jsp
 1 <%@ page language="java" contentType="text/html; charset=GB18030"
 2     pageEncoding="GB18030"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <%--通过useBean标签初始化一个JavaBean。 --%>
11 <jsp:useBean id="item" class="samples.javabean.BeanItem" scope="page"></jsp:useBean>
12 <form action="Ex7_4.jsp" method="post" id="bean">
13     Name:<input type="text" name="name" value="Item">
14     Truth:True<input type="radio" name="truth" value="true" checked="true">
15             False<input type="radio" name="truth" value="false">
16     <input type="submit" name="提交" value="Submit">
17 </form>
18 <%--通过setProperty标签设置JavaBean的属性 --%>
19 <jsp:setProperty property="*" name="item" />
20 <%--通过setProperty标签获取JavaBean的属性。 --%>
21     JavaBean的类:<%=item.getClass().getName() %><br>
22     JavaBean的Name属性:<jsp:getProperty property="name" name="item"/><br>
23     JavaBean的Truth属性:<jsp:getProperty property="truth" name="item"/><br>
24 </body>
25 </html>

 

3.JavaBean的作用域

3.1页面范围Page Scope

  表示JavaBean的有效范围是当前页面。当用户访问包含JavaBean的页面时,会实例化JavaBean。每个用户访问一个页面,都会各自初始化JavaBean,他们占用不用的内存空间,彼此间没有影响。当用户离开这个页面时,jsp引擎将销毁创建的JavaBean对象。页面范围的JavaBean一般用于显示后台结果,完成单个页面表单提交操作。操作都是在一个页面的访问内完成,并且不允许各个用户直接的数据相互干扰。

3.2会话范围Session Sope

  表示JavaBean的有效范围是当前用户会话。所谓一个用户会话是指用户在同一个浏览器窗口内在不同页面穿梭。会话范围内的JavaBean在会话开始的时候创建,并且在整个会话过程中有效。这样每个页面的useBean标签得到的是会话开始时构造的JavaBean的引用,而不会重新构造。不同用户之间的数据不会干扰,并且即使是同一个终端上的两个不同浏览器窗口,也会被认定是两个不同的会话。当用户关闭浏览器,会话结束,JavaBean对象即被销毁。会话范围的JavaBean用来保持需要在页面之间传递的数据,可以用来处理类似购物车,权限认证的保持等操作

3.3请求范围Request Scope

  表示JavaBean的有效范围是一个客户请求。用户在访问时向服务器发出请求,jsp技术允许Request对象在页面间传递。请求范围内的JavaBean会在请求开始的时候创建,并且在整个请求传递过程中都有效,最终在jsp引擎对请求做出回应后销毁。请求范围的JavaBean可以用于在请求处理过程中保持数据,应用在一些具有请求传递的复杂后台系统中。

3.4全局范围Application Scope

  表示JavaBean的有效范围是整个Web引用程序的生存周期,所有的用户共享这个JavaBean。它会在第一次被访问的时候构造这个JavaBean,以后除非关闭Web服务器,否之它将一直存在。jsp页中使用useBean标签获得同一个JavaBean的引用,一个用户改变了JavaBean的属性值,则所有的用户的JavaBean的属性值都发生了变化。全局范围的JavaBean可以用于用户间共享数据,或者统计Web应用程序的运行时状态,例如在线人数。由于它只被初始化一次,所有它也可以用来做一些初始化Web应用程序的作用,例如初始化数据库、连接池等。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 1 <%@ page language="java" contentType="text/html; charset=GB18030"
 2     pageEncoding="GB18030"%>
 3     <%@ page import="java.io.*" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 <font size="2">
12 <jsp:useBean id="item" class="samples.javabean.BeanItem" scope="page"></jsp:useBean>
13 <%--通过useBean标签初始化一个JavaBean --%>
14 <%
15     item.setName("Item");
16     item.setTruth(true);
17 %>
18 <%--调用JavaBean的getters方法 --%>
19     JavaBean的类:<%=item.getClass().getName() %><br>
20     JavaBean的Name属性:<%=item.getName() %><br>
21     JavaBean的Truth属性:<%=item.isTruth() %><br>
22 </font>
23 </body>
24 </html>

转载于:https://www.cnblogs.com/Jim-Huang/archive/2012/10/31/2748739.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值