JSF – Làm việc với CƠ SỞ DỮ LIỆU JSF – Làm việc với CƠ SỞ DỮ LIỆU Trong bài này, chúng ta làm việc với JSF kết nối cơ sở dữ liệu sử dụng JDBC thể liệt kê 1 bảng dữ liệu, thêm mẫu tin m
Trang 1JSF – Làm việc với CƠ SỞ DỮ LIỆU
JSF – Làm việc với CƠ SỞ DỮ LIỆU
Trong bài này, chúng ta làm việc với JSF kết nối cơ sở dữ liệu sử dụng JDBC thể liệt kê 1 bảng dữ
liệu, thêm mẫu tin mới, cập nhật thông tin của dòng dữ liệu cũng như xóa 1 dòng dữ liệu Giả sử
Database được thiết kế như sau:
Sau khi hoàn tất, ta có giao diện như sau:
Khi nhấn link “Insert New” sẽ cho ta trang thêm Lớp học mới
Khi nhấn Link Edit, sẽ load thông tin của dòng được chọn và cho hiệu chỉnh
Trang 2Khi nhấn link Delete, sẽ xóa dòng được chọn
Trong ví dụ này tôi dùng NetBeans IDE để thiết kế (Eclipse hay IDE khác cũng vậy)
Bước 1: Tạo 1 Web Application mới, chọn Framework là Java Server Faces như hình
Trang 3Bước 2: Tạo Manage-bean
018 privateString msLop;
019 privateString tenLop;
Trang 4020 privateString tenGVCN;
060 publicArrayList<LophocBean> getAllLophoc() {
061 ArrayList<LophocBean> lst = newArrayList<LophocBean>();
062 try{
Trang 53
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
06
4
Connection con =
DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databas eName=GC0563", "sa", "");
065 ResultSet rs = con.createStatement().executeQuery("select * from Lophoc");
082 * Action dùng để insert 1 mẫu tin mới
083 * @return success nếu thành công
08
8
Connection con =
DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databas eName=GC0563", "sa", "");
089 String sql = "insert into lophoc values(?,?,?)";
Trang 6108 publicvoiddeleteAction(ActionEvent evt) {
109 // We get the table object
110 HtmlDataTable table = getParentDatatable((UIComponent) evt.getSource());
111 // We get the object on the selected line
11
6
Connection con =
DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databas eName=GC0563", "sa", "");
117 String sql = "delete lophoc where msLop=?";
130 publicvoideditBook(ActionEvent evt) {
131 // We get the table object
132 HtmlDataTable table = getParentDatatable((UIComponent) evt.getSource());
133 // We get the object on the selected line
141 // Method to get the HtmlDataTable
142 privateHtmlDataTable getParentDatatable(UIComponent compo) {
143 if(compo == null) {
144 returnnull;
Trang 7145 }
146 if(compo instanceofHtmlDataTable) {
147 return(HtmlDataTable) compo;
15
9
Connection con =
DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databas eName=GC0563", "sa", "");
Bước 3: Thiết kế giao diện
Tạo trang liệt kê danh sách các lớp học: Lophoc.jsp
01<%@page contentType="text/html" pageEncoding="UTF-8"%>
02
03<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
04<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
Trang 901<%@page contentType="text/html" pageEncoding="UTF-8"%>
02<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
03<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
21 <h:outputLabelfor="ht"value="Tên lớp"/>
22 <h:inputTextid="ht"value="#{lophoc.tenLop}"/>
23
24 <h:outputLabelfor="gv"value="Tên GVCN"/>
25 <h:inputTextid="gv"value="#{lophoc.tenGVCN}"/>
Trang 1001<%@page contentType="text/html" pageEncoding="UTF-8"%>
02<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
03<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
16 <h:form>
17 <h:panelGridcolumns="2">
18 <h:outputLabelfor="ms"value="Mã số lớp"/>
19 <h:inputTextid="ms"value="#{lophoc.msLop}"/>
20 <h:outputLabelfor="ht"value="Tên lớp"/>
21 <h:inputTextid="ht"value="#{lophoc.tenLop}"/>
22 <h:outputLabelfor="gv"value="Tên GVCN"/>
23 <h:inputTextid="gv"value="#{lophoc.tenGVCN}"/>
Trang error.jsp cho việc hiển thị lỗi
01<%@page contentType="text/html" pageEncoding="UTF-8"%>
02<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
Trang 1103<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
Trang 13Bước 5: Thực thi chương trình và thưởng thức
Chúc thành công!
Like
Be the first to like this
22 Responses to “JSF – Làm việc với CƠ SỞ DỮ LIỆU”
Trang 142
Đỉnh said
May 31, 2011 at 4:30 am
Dear thầy!
Thầy ơi cho em hỏi, khi em load trang viewAccount.jsp,nó báo là:
„#{RegisterBean1.getAllAccount}‟ Property „getAllAccount‟ not found on type
demo.RegisterBean1 ( cai getAllAccount cua em chinh la getAllLophoc cua thầy.)
Trang 158
Trần Công Vương said
October 30, 2011 at 7:57 pm
Em chào thầy ạ.Thầy có thể ví dụ thêm về phần view được không ạ?Bên cạnh 2
commanlink EDIT va DELETE có thêm 1 commanlink la VIEW để khi ta click VIEW thì nó
sẽ qua form khác và trên form đó sẽ hiển thị lên tất cả thông tin của GiaoVienChuNhiem
đó được không ạ?
Mong thầy sẽ cho ví dụ sớm.Em cảm ơn thầy trước
9
Trang 17sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25 )
… 20 more
Em chào thầy , mong này giúp em sửa lỗi này Em làm giống vd của thầy
public String checkUser(){
String sql =”SELECT * FROM users WHERE username=? AND password=?”;
return con;
}
10
Trang 18JSF said
November 4, 2011 at 5:58 am
Em chào thầy, em đang làm JSF, để có thể làm được các ví dụ
em cần phải có những bộ thư viện nòa ạ MOng thầy cung cấp cho em
Em xin cảm ơn thầy
Trang 19Em chào thầy , thầy có thể cho em biết em cần những gói thư viện nào để có thể làm các
vd liên quan tới các tag <a4j <rich
Em muốn làm các vd giông trong trang này
http://richfaces-showcase.appspot.com/richfaces/component-sample.jsf?demo=dataGrid&skin=blueSky
Hiện tại em đang có thư viện JSF 2.1, JSTL1.1
Mong thầy giúp đỡ
14
Võ Văn Hải said
November 10, 2011 at 1:36 pm
2 thư viện chuẩn của JSF là jsf-api-….jar và jsf-impl-…jar, cái thẻ là thẻ của richfaces, bạn
có thể tìm hiểu thêm ở bài này
15
Võ Văn Hải said
November 10, 2011 at 1:54 pm
“Em chào thầy, em đang làm JSF, để có thể làm được các ví dụ
em cần phải có những bộ thư viện nòa ạ MOng thầy cung cấp cho em
Em xin cảm ơn thầy.”
Vui lòng tìm kỹ trong blog này sẽ có cau trả lời
Trang 2017
Khoa said
December 7, 2011 at 9:41 am
Thầy có thể chỉ cho em cách ch n 1 trang jsf vào 1 trang khác được không
Ví dụ em tạo ra 1 trang menu, sau đó em ch n trang này cho các trang khác
Trong jsp em dùng jsp:include, còn trong jsf em không biết
Mong thầy giúp đỡ Em chúc thầy mạnh khỏe
chao thay! e thac mat la khi minh nhan nut delete thi lam seo biet truyen tham so id cho
no a thay co the giai thich ro hon dc hk a mong thay giup do!
20
Ken said
May 11, 2012 at 3:34 pm
Neu mh truyen tham 1 tham so cho nhu the nay:
Thi ben Lophocbean mh lam seo de nhan tham so nay ha Thay? va lieu e viet nhu vay co dung chua?…Kinh mong thay giup dum e!
Trang 2121
Minh Phúc said
August 8, 2012 at 4:06 am
Chào a, tôi có 2 trang Trên trang 1 tôi hiển thị dữ liệu từ bean được thiết lập là
SessionScoped, từ trang 1 chuyển qua trang 2 để thực hiện thao tác dữ liệu Nhưng sau khi thay đổi dữ liệu thành công và database đã thay đổi nhưng khi quay về trang 1 dữ liệu vẫn ko thay đổi Nếu dùng ViewScoped thì ko thể chuyển dữ liệu qua trang 2 được hoặc a
có cách nào giúp chuyển dữ liệu qua trang 2 từ trang 1 ko (trang 2 và trang 1 dùng cùng
1 bean) A có cách nào giúp tôi giải quyết được vấn đề đó ko?
22
Võ Văn Hải said
August 29, 2012 at 4:08 am
Chào a, tôi có 2 trang Trên trang 1 tôi hiển thị dữ liệu từ bean được thiết lập là
SessionScoped, từ trang 1 chuyển qua trang 2 để thực hiện thao tác dữ liệu Nhưng sau khi thay đổi dữ liệu thành công và database đã thay đổi nhưng khi quay về trang 1 dữ liệu vẫn ko thay đổi Nếu dùng ViewScoped thì ko thể chuyển dữ liệu qua trang 2 được hoặc a
có cách nào giúp chuyển dữ liệu qua trang 2 từ trang 1 ko (trang 2 và trang 1 dùng cùng
1 bean) A có cách nào giúp tôi giải quyết được vấn đề đó ko?
Anh có thể send mail cho tôi demo của anh không? nói vầy thật khó trả lời