Chúng ta hãy xem các ví dụ sau:
- Thuộc tính mang những giá trị đơn.
Bean sau đây lấy thời gian của hệ thống.
Code 15: Java file
package com.legiang.bean; import java .util.*;
public class CurrentTimeBean { /*Data members*/
private int hours; private int minutes;
/* Methods */
Code 15: Java file (tiếp theo)
public CurrentTimeBean() { Date now = new Date(); this.hours = now.getHours(); this.minutes = now.getMinutes(); }
public int getHours() { return hours;
}
public int getMinutes() { return minutes(); }
}
Code 16: JSP file
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 26
class="com.legiang.bean.CurrentTimeBean"/> <html>
<body>
It is now <jsp:getProperty name="time" property="minutes"/>
minutes past the hour. </body>
</html>
- Thuộc tính mang giá trị boolean.
Code 17: Java file
package com.legiang.bean; public class LogicBean { /*Data members*/
private boolean authorized; /*Methods*/
public LogicBean() { this.authorized = false; }
public void setAuthorized(boolean authorized) { this.authorized = authorized;
}
public boolean isAuthorized() {
Code 17: Java file (tiếp theo)
return authorized; } } Code 18: JSP file <jsp:useBean id="logic" class="com.legiang.bean.LogicBean"/> <html> <body> Do you authorize?<br/> Answer:<jsp:getProperty name="logic" property="authorized"/> </body> </html>
- Thuộc tính mang giá trị mảng.
Ví dụ này sẽ xây dựng một component mà cĩ thể thực hiện các tính tốn tĩnh trên một dãy số.
package com.legiang.bean; import java.util.*;
public class StatBean { /*Data members*/
private double[] numbers; /*Methods*/
public StatBean() {
numbers = new double[0]; }
public double getAverage() { double sum = this.getSum(); if (sum == 0)
return 0; else
return sum/numbers.length; }
public double getSum() {
Code 19: Java file (tiếp theo)
double sum = 0;
for (int i=0; i < numbers.length; i++) sum += numbers[i];
return sum; }
public double[] getNumbers() {
return numbers; }
public double getNumbers(int index) { return numbers[index];
}
public void setNumbers(double[] numbers) { this.numbers = numbers;
}
public void setNumbers(int index, double value) { numbers[index] = value;
}
public int getNumbersSize() { return numbers.length; }
}
Code 20: JSP file
<jsp:useBean id="stat" class="com.lg.bean.StatBean"> <%
double[] mynums = {100, 250, 150, 50, 450}; stat.setNumbers(mynums);
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 28
%> </jsp:useBean> <html> <body> The average of <%
double[] numbers = stat.getNumbers(); for (int i=0; i < numbers.length; i++) { if (i != numbers.length)
out.print(numbers[i] + ","); else
Code 20: Java file (tiếp theo)
out.println("" + numbers[i]); }
%>
is equal to <jsp:getProperty name="stat" property="average" />
</body> </html>
Ngồi các loại thuộc tính trên, Java cịn cung cấp một số thuộc tính nâng cao khác dùng cho các Bean đồ hoạ.
III.Các giao tiếp bổ trợ cho Bean.
Trong khi điều này khơng phải là yêu cầu đặc biệt thì cĩ một số giao tiếp cho phép chúng ta cài đặt vào Beans. Các giao tiếp này cĩ thể được dùng để mở rộng tính năng các Bean của chúng ta đối với các tình huống khác nhau.
1. Giao tiếp BeanInfo
Chúng ta đã biết về cơ chế tương phản (reflection) trong mục trước, nhưng cĩ phương pháp khác mà một lớp Bean cĩ thể báo cho Bean container (như JSP container) biết về các thuộc tính của nĩ bằng cách cài đặt giao tiếp
BeanInfo. Giao tiếp BeanInfo cho phép chúng ta tạo ra một lớp đồng hành với Bean của chúng ta mà định nghĩa các thuộc tính và các cấp độ truy cập của nĩ. Giao tiếp cĩ thể được dùng để thích ứng với các lớp Java đã cĩ đối với việc sử dụng của Bean mà khơng cần thay đổi giao tiếp đã tạo. Nĩ cũng được sử dụng để che dấu các thuộc tính nào được truy cập thường xuyên từ client, vì thỉnh thoảng cơ chế reflection chuẩn của Java cĩ thể phơi bày nhiều thơng tin mà chúng ta lại khơng muốn như thế.
Để tạo lớp BeanInfo chúng ta chỉ cần đặt tên lớp cùng với tiếp vị ngữ
BeanInfo (như SimpleBeanBeanInfo) và cài đặt giao tiếp java.beans.BeanInfo. Quy tắc đặt tên này là cách báo cho Bean container (như JSP container) biết để xác định lớp BeanInfo thích hợp cho Bean chúng ta.