Hướng dẫn thực hành Lập trình Java 2
Mục lục
Module 1 : Ôn tập Graphic User Interface. 3
Module 2: Thực hành về MultiThreading. 23
Module 3: Thực hành về Collections. 34
Module 4: Thực hành về Networking. 46
Module 5: Thực hành về JDBC. 64
Module 6: Thực hành về JSP. 75
14-0119 P020202025 Prentice Hall PTR 49 Sandiego, USA 110-115-0113 Dữ liệu mẫu của bảng tblBook( bảng lưu các đầu sách) tblBook BookCode BookName PublisherCode B032120449 Introduction to The Design and Analysis of Algorithms P020202021 B032120450 Operating System Concepts P020202022 B032120451 Advanced Concepts in Operating Systems 6th P020202023 B032120452 Beginning XML 2nd P020202024 B032120453 Core Java 2 Volume II P020202025 B032120454 A Biography Compiled P020202021 B032120455 Academic Culture P020202021 B032120456 Achieving Broad Development P020202021 B032120457 Achieving a Productive Aging Society P020202021 B032120458 Portrait of a Marching Black P020202021 B032120459 Automatically Adaptable Software P020202022 B032120460 Problems in Psychology P020202022 B032120461 Human Relations in a Factory P020202022 B032120462 Admiral Halsey's Story P020202023 B032120463 Theoretical and Research Perspectives P020202024 B032120464 The Adolescent in Turmoil P020202021 B032120465 Adolphus, a Tale P020202024 B032120466 Adventures P020202021 B032120467 Aerogeology P020202021 Giao diện chính của chương trình như sau: Yêu cầu: Thiết kế giao diện sử dụng như trên, chạy script SQL để tạo cơ sở dữ liệu. Hiển thị danh sách các nhà xuất bản lên JTable, viết các sự kiện cho 2 JButton Về trước, về sau và JTable. Chú ý rằng mỗi lần click vào từng dòng trên JTable thì sẽ hiển thị thông tin của nhà xuất bản lên phần thông tin chi tiết; Click “Về trước” thì hiển thị nhà xuất bản ở phía trước; Click “Về sau” thì hiển thị nhà xuất bản ở phía sau. Thực hiện các chức năng Thêm, Lưu, Sửa, Xóa Thực hiện chức năng tìm kiếm khi bấm vào nút “Tìm Kiếm” Khi thực hiện chức năng này thì giao diện Tìm Kiếm sẽ được hiển thị như bên dưới(chú ý rằng chức năng này cho phép tìm kiếm tương đối) Ví dụ: (Khi bấm nút Tìm kiếm trong công cụ tìm kiếm) Người sử dụng nhập p02, hoặc 23 thì sẽ xuất ra toàn bộ đầu sách theo mã nhà xuất bản có chứa bất kỳ chuỗi p02, hoặc 23 Gợi ý: Dùng từ khóa like và % trong câu truy vấn tìm kiếm tương đối MODULE 6 Mục đích: Thực hành về JSP. Module này giúp sinh viên làm quen với Javaservlet và JSP Thiết kết Html sinh viên có thể sử dụng công cụ Microsoft Expression Web hoặc Dreamweaver Để tạo Project JSP trong eclipse, chúng ta cần các công cụ sau: Chương trình eclipse Java EE Apache tomcat ver 7.0 (hoặc tùy …) JDK version 6, 7 (hoặc tùy…) Lab 1: Các bước tạo 1 project Web như sau (sinh viên làm theo lab này trước khi làm các bài tập bên dưới): Giả sử ta cài tomcat vào “C:\Program Files\Apache Software Foundation\Tomcat 7.0” Khởi động Eclipse Java EE để tạo Project Bấm chuột phải vào Project Explorer / new/ chọn Dynamic Web Project Sau khi chọn Dynamic Web Project Cứ Chọn Next cho tới màn hình cuối cùng và chọn các thông số như hình sau đó bấm Finish: Cấu trúc thư mục của project Web: Để kết nối tới SQL Server, chúng ta làm bước sau (trước tiên phải có thư viện kết nối): Có nhiều cách tham chiếu tới các thư viện, ở đây chúng ta làm theo cách tham chiếu kiểu gom nhóm các thư viện vào chung 1 chỗ cho tiện lợi, thực tế chúng ta hay làm theo cách này: Bấm chuột phải vào Project/ chọn Build Path / chọn Configure Build Path… Tại cửa sổ này, chúng ta chọn Add Library: Chọn User Library và click Next: Chọn User Libraries: Chọn New để tạo nhóm thư viện: Nhập tên thư viện và nhấn OK. Tại cửa sổ này, chọn Libcuatui rồi click Add JARs… Trong trường hợp này chúng ta sẽ trỏ tới thư viện kết nối Sqlserver, ở đây là gói sqljdbc4.jar. Chúng ta có thể tìm thấy nó ở bất cứ nơi đâu trên internet. Bây giờ quan sát Project, chúng ta sẽ thấy thư viện vừa thêm vào: Để chạy được, chúng ta đồng thời phải sao chép sqljdbc4.jar vào “C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib” Ở đây chúng ta sẽ tạo một số class để tương tác tới cơ sở dữ liệu sql server Class Account là mô hình hóa cơ sở dữ liệu thành hướng đối tượng: ở đây chỉ có mã, tên. Class MyData có nhiệm vụ truy suất sqlserver và trả về ArrayList Account Class Account: Class MyData: Tiếp tục, chúng ta tạo 1 trang web, tên là index.jsp để hiển thị danh sách Account: Trang index.jsp: Sau khi chạy, dữ liệu sẽ được hiển thị lên trang index.jsp như bên dưới. Lab 2: Thao tác với JavaServlet Tạo một Servlet tên là ProcessData để xử lý dữ liệu. Chỉnh sửa thêm tập tin web.xml như bên dưới: Trang web nào muốn tương tác tới servlet thì làm như sau: Thuộc tính action của form chính là tên của servlet, method có 2 loại: Nếu ta chọn “post” thì hàm doPost của servlet sẽ thực thi, nếu ta chọn “get” thì hàm doGet của servlet sẽ thực thi. Để lấy các giá trị của các control trên web, chúng ta dùng request.getParameter(“tên”) Để triển khai ứng dụng web. Bấm chuột phải vào Project/ Export / WAR file Tại màn hình này chúng ta Export vào thư mục webapps của apache tom cat. Quan sát project QLThuvien sẽ được sinh ra từ QLThuvien.war trong webapps: Muốn chạy : . Với 8888 là port do ta chọn lúc cài đặt. Bài tập 1: Quản lý thí sinh, Sinh viên phải làm trên Access và Sqlserver 2008 Cho CSDL có tên QLTS.mdb (sinh viên tự chuyển qua SQL server). Thiết kế bảng Thisinh co cấu trúc như hình Nhập liệu vài mẫu tin thử Tạo 1 ứng dụng Dynamic Web Project có tên QLTS. Thiết kế trang index.jsp sao cho khi chạy hiển thị danh sách thí sinh như hình sau: Khi nhấn vào link Insert New sẽ cho phép người dùng nhập thông tin của 1 thí sinh và thêm vào CSDL như hình: Khi nhấn link Edit sẽ cho phép người dùng hiệu chỉnh thông tin của thí sinh được chọn sau đó cập nhật xuống csdl Khi nhấn Link Delete sẽ xóa thí sinh được chọn. Gợi ý: kiến trúc dự án trong eclipse Bài tập 2: Quản lý sinh viên. Sinh viên làm theo mẫu Lab này để làm quen với Servlet. Lab này làm ví dụ cho bài tập 1 - Chương cho phép hiển thị danh sách sinh viên - Thêm mới sinh viên - Chỉnh sửa thông tin sinh viên - Xóa sinh viên Dưới đây là một phần của thiết kế cơ sở dữ liệu quản lý sinh viên. Cấu trúc Website trong Eclipse được tạo như sau: Giải thích: Webcontent chứa các tập tin web jsp: Trang index.jsp sẽ hiển thị danh sách sinh viên theo mẫu bên dưới: Trang update.jsp/ newpage.jsp: Dùng để chỉnh sửa/ thêm mới sinh viên: Trang deletepage.jsp : dùng để thực thi việc xóa 1 sinh viên theo mã. Trong Java Resource có 4 package thực hiện các chức năng sau: vn.edu.hui.connector : Dùng để tương tác trực tiếp tới cơ sở dữ liệu (Tạo connection, tạo Resultset, tạo Statement, update thông tin…) vn.edu.hui.model : lưu trữ các class là mô hình hóa cơ sở dữ liệu thành hướng đối tượng vn.edu.hui.dal : Dùng để tương tác với connector, kết hợp chặt chẽ với model. vn.edu.hui.servlet : Servlet để xử lý các thông tin từ các trang Jsp gửi về. Dưới đây là coding của các package ConnectorFactory: package vn.edu.hui.connector; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class ConnectorFactory { public Connection getConnect() { Connection conn=null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn =DriverManager.getConnection ("jdbc:sqlserver://localhost;databaseName=dbqlsv;user=sa;password=hoilamgi"); } catch (Exception e) { e.printStackTrace(); } return conn; } public Statement createStatement() { Statement st=null; try { st = getConnect().createStatement(); } catch (SQLException e) { e.printStackTrace();} return st; } public ResultSet execQuery(String sql) { ResultSet rs=null; try { rs=createStatement().executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } public int excecNonQuery(String sql) { Statement st=createStatement(); int ret=0; try { ret = st.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace();} return ret; } } Package Model Package dal: package vn.edu.hui.dal; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import vn.edu.hui.connector.ConnectorFactory; import vn.edu.hui.model.Sinhvien; public class ProcessSinhvien { ConnectorFactory factor=null; public ProcessSinhvien() { factor=new ConnectorFactory(); } public ArrayList getList() { ResultSet rs=factor.execQuery("select * from sinhvien"); ArrayListlist=new ArrayList(); try { while(rs.next()) { Sinhvien sv=new Sinhvien(rs.getString("masinhvien"), rs.getString("tensinhvien"), rs.getString("malop")); list.add(sv); } } catch (SQLException e) { e.printStackTrace(); } return list; } public Sinhvien getInfor(String masv) { Sinhvien sv=null; try { ResultSet rs=factor.execQuery("select * from sinhvien where masinhvien='"+masv+"'"); rs.next(); sv=new Sinhvien(rs.getString("masinhvien"), rs.getString("tensinhvien"), rs.getString("malop")); } catch(Exception ex) { ex.printStackTrace(); } return sv; } public int update(Sinhvien sv) { int ret=0; String sql="update sinhvien set tensinhvien='"+sv.getTensinhvien()+"',malop='"+sv.getMalop()+"' where masinhvien='"+sv.getMasinhvien()+"'"; ret=factor.excecNonQuery(sql); return ret; } public int insert(Sinhvien sv) { int ret=0; String sql="insert into sinhvien values('"+sv.getMasinhvien()+"','"+sv.getTensinhvien()+"','"+sv.getMalop()+"')"; ret=factor.excecNonQuery(sql); return ret; } public int delete(Sinhvien sv) { int ret=0; String sql="delete from sinhvien where masinhvien='"+sv.getMasinhvien()+"'"; ret=factor.excecNonQuery(sql); return ret; } public int delete(String masv) { int ret=0; String sql="delete from sinhvien where masinhvien='"+masv+"'"; ret=factor.excecNonQuery(sql); return ret; } } Package xử lý update (java servlet): Package xử lý thêm mới (java servlet): Web.xml Cách hiển thị nội dung lên trong index.jsp: Trang chỉnh sửa (update.jsp – tương tự cho trang newpage.jsp) Trang deletepage.jsp:
File đính kèm:
- Final_Java2_Excercise_2013.docx