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
30 trang |
Chia sẻ: Thành Đồng | Ngày: 11/09/2024 | Lượt xem: 26 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Chuyên đề Servlet Basic, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
SERVLET BASIC
CHUYÊN ĐỀ JAVA
Nguyễn Hoàng Anh
Email: nhanh@fit.hcmus.edu.vn
ĐH KHTN, 2011
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
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
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Nhiệm vụ của Servlet
3
Web Browser Web Server Servlet
Request
Response
Request
Response
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Nhiệm vụ của Servlet
Đọc dữ liệu từ Client
– Tường minh: Form Data
– Ngầm định: Request Headers
Xử lý đọc, thêm, xóa, sửa dữ liệu từ cơ sở dữ liệu
Phát sinh kết quả
– HTML, XML, Excel,
Trả kết quả về cho Client
– Tường minh: HTML, XML, Excel,.
– Ngầm định: Status Codes, Response Headers
4
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
HTTP GET & HTTP POST
Hai cơ chế Request thông dụng nhất từ Client
– HTTP GET và HTTP POST
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)
– Không giới hạn dung lượng gửi
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Servlet với cấu trúc đơn giản
6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@WebServlet(name="ServletSample", urlPatterns={"/ServletSample"})
public class ServletSample extends HttpServlet {
protected void processRequest (HttpServletRequest
request, HttpServletResponse response){
...
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response){
processRequest (request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) {
processRequest (request, response);
}
}
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Servlet với cấu trúc đơn giản
7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("");
out.println("");
out.println("Servlet ServletSample");
out.println("");
out.println("");
out.println("Xin chào Nguyễn Hoàng Anh");
out.println("");
out.println("");
} finally {
out.close();
}
}
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Servlet với cấu trúc đơn giản
8
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Custom URL
9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@WebServlet(name="ServletSample", urlPatterns={"/NewServlet"})
public class ServletSample extends HttpServlet {
protected void processRequest (HttpServletRequest
request, HttpServletResponse response){
...
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response){
processRequest (request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) {
processRequest (request, response);
}
}
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Custom URL
10
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
service()
doPost()
do ()
doGet()
Chu kỳ sống của servlet
11
init() destroy()
1 2* 3
Phương thức khởi tạo Phương thức hủy Phương thức phục vụ Request
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
12
- Được tự động gọi thực hiện khi
server tạo thể hiện Servlet
- Được xem như là phương thức
khởi tạo
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
13
@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();
//Khởi tạo thuocTinh1
//Khởi tạo thuocTinh2
...
//Khởi tạo thuocTinhn
}
protected void processRequest(...){...}
@Override
protected void doGet(...){...}
@Override
protected void doPost(...){...}
}
Nguyễ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 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(...){...}
}
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
15
- 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
- Không cài đặt lại phương thức này
Nguyễ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
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
17
- Đượ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
Nguyễ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(...){...}
}
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Chu kỳ sống của servlet
19
@WebServlet(name="ServletSample",
urlPatterns={"/ServletSample"})
public class ServletSample
extends HttpServlet {
private ArrayList 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(...){...}
}
Nguyễ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
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – Sơ đồ use case
21
Xem Danh Sach Cac Dau Sach
Theo Danh Muc Co Phan Trang
Khachhang
Xem Trang Chu
>
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – Cơ sở dữ liệu
22
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – Mô hình xây dựng (2 Layer)
23
DATABASE
Data Layer
Presentation Layer
Java Beans
(POJO)
Nguyễ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)
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
BookOnline – 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:
BookOnline-Servlet-Trang-Chu.avi
25
Nguyễ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
Nguyễ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 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
27
Nguyễ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
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Tà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
–
29
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
HỎI VÀ ĐÁP
30
Các file đính kèm theo tài liệu này:
- chuyen_de_servlet_basic.pdf