Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 Nội dung trình bày Nhiệm vụ của Servlet Servlet với cấu trúc đơn giản Custom URL cho Servlet Chu kỳ sống của Servlet
Trang 2Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Nội dung trình bày
Nhiệm vụ của Servlet
Servlet với cấu trúc đơn giản
Custom URL cho Servlet
Chu kỳ sống của Servlet
Xây dựng một số chức năng cho BookOnline với Servlet
– Trang chủ
– Trang hiển thị sách theo danh mục có phân trang
– Xem chi tiết sách
2
Trang 3Nhiệm vụ của Servlet
Request
Response Request
Response
Trang 4Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Nhiệm vụ của Servlet
Trả kết quả về cho Client
– Tường minh: HTML, XML, Excel,…
– Ngầm định: Status Codes, Response Headers
4
Trang 5HTTP GET & HTTP POST
Hai cơ chế Request thông dụng nhất từ Client
HTTP GET Request
– Thông tin gửi đính kèm vào cuối URL
– Dữ liệu gửi bị giới hạn
• /XemSanPham?id=S001&Trang=1
HTTP POST Request
– Thông tin gửi xem như dữ liệu (không đính kèm vào URL)
Trang 6Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Servlet với cấu trúc đơn giản
@WebServlet(name= "ServletSample" , urlPatterns={ "/ServletSample" })
public class ServletSample extends HttpServlet {
protected void processRequest (HttpServletRequest
request, HttpServletResponse response){
Trang 7Servlet với cấu trúc đơn giản
Trang 8Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Servlet với cấu trúc đơn giản
8
Trang 9@WebServlet(name= "ServletSample" , urlPatterns={ "/NewServlet" })
public class ServletSample extends HttpServlet {
protected void processRequest (HttpServletRequest
request, HttpServletResponse response){
Trang 10Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Custom URL
10
Trang 11service()
doPost()
do… () doGet()
Chu kỳ sống của servlet
Trang 12Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
Trang 13Chu kỳ sống của servlet
@WebServlet(name= "ServletSample" , urlPatterns={ "/ServletSample" })
public class ServletSample
extends HttpServlet { private KieuDuLieu thuocTinh1;
private KieuDuLieu thuocTinh2;
private KieuDuLieu thuocTinhN;
@Override public void init(){
super.init();
} protected void processRequest( ){ } @Override
protected void doGet( ){ }
Trang 14Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
14
@WebServlet(name= "ServletSample" , urlPatterns={ "/ServletSample" })
public class ServletSample
extends HttpServlet { private ArrayList<DanhMucPOJO> ds; @Override
public void init(){
super.init();
ds=DanhMucDAO.layDanhSachDanhMuc(); }
protected void processRequest( ){
Sử dụng ds }
@Override protected void doGet( ){ }
@Override protected void doPost( ){ }
}
Trang 15Chu kỳ sống của servlet
- Nhận xử lý tất cả các request từ client
- Phương thức service tự động được gọi thực hiện khi request từ client gửi đến
- Chuyển request của client đến doGet(), doPost(), do… () tương ứng từ client
- Điều kiện: phương thức init () đã được gọi
Trang 16Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
16
- Request được service() chuyển đến doGet(), doPost(), do… () tương ứng phụ thuộc từ client
- Xử lý GET, POST, … từ request
- Cần cài đặt lại phương thức doGet(), doPost(), do… () để xử lý request tương ứng từ client
Trang 17Chu kỳ sống của servlet
- Được tự động gọi thực hiện khi server hủy thể hiện của Servlet
- Được xem như là phương thức hủy
Trang 18Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
18
@WebServlet(name= "ServletSample" , urlPatterns={ "/ServletSample" })
public class ServletSample
extends HttpServlet { private KieuDuLieu thuocTinh1;
private KieuDuLieu thuocTinh2;
private KieuDuLieu thuocTinhN;
@Override public void init(){ }
@Override
public void destroy(){
Giải phóng thuocTinh1, 2, ,n
} protected void processRequest( ){ } @Override
protected void doGet( ){ }
@Override protected void doPost( ){ }
}
Trang 19Chu kỳ sống của servlet
@WebServlet(name= "ServletSample" , urlPatterns={ "/ServletSample" })
public class ServletSample
extends HttpServlet { private ArrayList<DanhMucPOJO> ds;
@Override public void init(){
super.init();
ds=DanhMucDAO.layDanhSachDanhMuc(); }
@Override
public void destroy(){
ds = null;
} protected void processRequest( ){ } @Override
protected void doGet( ){ }
@Override protected void doPost( ){ }
Trang 20Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – Các chức năng
Khách hàng có thể xem trang chủ của ứng dụng web
Trong lúc xem trang chủ khách hàng có thể chọn chức năng xem danh sách các đầu sách theo danh mục có phân trang, số đầu sách trên trang là 5 (số này có thể thay đổi)
Thông tin danh mục bao gồm: mã danh mục, tên danh mục
Thông tin sách bao gồm mã sách, tên sách, giá bán,
số lượng tồn, tác giả, mã danh mục, hình ảnh
20
Trang 21BookOnline – Sơ đồ use case
Xem Danh Sach Cac Dau Sach Theo Danh Muc Co Phan Trang
Khachhang
Xem Trang Chu
<<extend>>
Trang 22Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – Cơ sở dữ liệu
22
Trang 23BookOnline – Mô hình xây dựng (2 Layer)
DATABASE
Data Layer
Presentation Layer Java Beans
(POJO)
Trang 24Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – Mô hình xây dựng (2 Layer)
24
DATABASE
Data Layer (JDBC)
Presentation Layer
(Servlet) Java Beans
(POJO)
Trang 25BookOnline – Xây dựng trang chủ
Bước 1: Thiết kế trang chủ bằng HTML với Dreamweaver
Bước 2: Sử dụng công cụ Html2Servlet.exe để chuyển đoạn html thành Servlet (được cung cấp)
– Đơn giản thêm out.println vào mỗi dòng HTML
Bước 3: Tạo Servlet TrangChu.java
– Chép đoạn mã servlet từ bước 2 vào phương thức processRequest
Chi tiết xem:
Trang 26Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – Xây dựng xem danh sách đầu sách
Bước 1: Thiết kế trang xem danh sách đầu sách bằng HTML với Dreamweaver (thiết kế mẫu)
Bước 2: Sử dụng công cụ Html2Servlet.exe để chuyển đoạn html thành Servlet (được cung cấp)
Bước 3: Tạo Servlet Sach.java
– Chép đoạn mã servlet từ bước 2 vào phương thức processRequest
Bước 4: Xây dựng lớp DanhMucPOJO, SachPOJO
26
Trang 27BookOnline – Xây dựng xem danh sách đầu sách
Bước 5: Xây dựng lớp ThamSoDAO
– Lấy số lượng sản phẩm trên trang
Bước 6: Xây dựng lớp DanhMucDAO
– Lấy danh sách danh mục
– Tính số lượng sản phẩm theo danh mục
– Tính số lượng trang theo danh mục
Trang 28Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – Xây dựng xem danh sách đầu sách
Bước 7: Xây dựng lớp SachDAO
– Lấy danh sách sách theo danh mục và trang
Bước 8: Sử dụng phương thức từ các DAO và POJO vào các đoạn động tương ứng trong Servlet Sach.java
Chi tiết xem video:
–
BookOnline-Servlet-Xem-Danh-Sach-Dau-Sach-Theo-Danh-Muc-Co-Phan-Trang.avi
28
Trang 29Tài liệu tham khảo
Nguyễn Hoàng Anh, Tập bài giảng và video môn chuyên đề Java, 2010
Marty Hall, Tập bài giảng về Servlet, 2010
– http://courses.coreservlets.com/Course-Materials/csajsp2.html
Trang 30Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
HỎI VÀ ĐÁP
30