39

02. J2EE Servlet Basic 2.0.1

  • Upload
    ga-con

  • View
    26

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 02. J2EE Servlet Basic 2.0.1
Page 2: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Nội dung trình bày

Xây dựng Servlet đơn giản

Nhiệm vụ của Servlet

Các bước cơ bản xây dựng một trang Servlet

Ví dụ minh họa

Chu kỳ sống của Servlet

Ví dụ minh họa

2

Page 3: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Xây dựng servlet đơn giản

Xem nhanh các bước xây dựng một servlet đơn giản

với Netbeans, tương tự với Eclipse.

3

Page 4: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Tạo mới Project

4

Page 5: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Đặt tên và lưu Project

5

Page 6: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chọn Server

6

Page 7: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Cấu trúc Project

7

Java Class, Servlet

Thư viện

CSS, JavaScript, HTML, Images

Page 8: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Tạo Servlet

8

Page 9: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Tạo Servlet

9

Page 10: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Tạo Servlet

10

Page 11: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Tạo giao diện web với HTML

11

1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21

protected void processRequest(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

try {

out.println("<html>");

out.println("<head>");

out.println("<title>My Servlet</title>");

out.println("</head>");

out.println("<body>");

out.println("<h1>Chào mừng bạn đến với lập trình web

cơ bản/h1>");

out.println("</body>");

out.println("</html>");

} finally {

out.close();

}

}

Page 12: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chạy thử nghiệm Servlet

12

Page 13: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Custom URL cho Servlet

13

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@WebServlet(name="MyServlet", urlPatterns={"/YourServlet"})

public class MyServlet 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);

}

}

Page 14: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Custom URL cho Servlet

14

Page 15: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Bạn hãy thử đoán

Servlet làm được gì và cho nhận xét?

15

Page 16: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Nhiệm vụ của Servlet

16

Web Browser Web Server Servlet

Request

Response

Request

Response

Page 17: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

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

17

Page 18: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

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

Page 19: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Cách đọc dữ liệu từ HTTP GET

HTTP GET

– URL: http://localhost/BookOnline/SachServlet

? Action=Xem & MaSach = S001

– Cách đọc các tham số từ phương thức doGet

String action = request.getParameter(“Action”);

String maSach = request.getParameter(“MaSach”);

19

Page 20: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Cách đọc dữ liệu từ HTTP GET

HTTP GET

– URL: http://localhost/BookOnline/SachServlet

? Action=Xem & MaSach = S001

– Cách đọc các tham số từ phương thức doGet

String action = request.getParameter(“Action”);

String maSach = request.getParameter(“MaSach”);

20

Page 21: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Cách đọc dữ liệu từ HTTP POST

HTTP POST

– Dữ liệu gửi từ form có method là POST

– Cách đọc các tham số từ phương thức doPost

String action = request.getParameter(“tenDangNhap”);

String maSach = request.getParameter(“matKhau”);

21

Page 22: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Các bước cơ bản xây dựng trang Servlet

Bước 1: Sử dụng Dreamweaver để thiết kế giao diện.

Bước 2: Sử dụng công cụ tiện ích Html2Servlet . exe

để chuyển giao diện thiết kế ở bước 1 thành Servlet.

Bước 3: Chép đoạn mã servlet từ bước 2 vào phương

thức processRequest hoặc doGet, doPost

Bước 4: Thực hiện phân tích Request từ client rồi

thực hiện các yêu cầu tương ứng như đọc, ghi dữ liệu

Bước 5: Thêm các câu lệnh if, do, while, for,… vào

servlet tùy thuộc vào yêu cầu của trang để tạo một

trang web động với Servlet một cách hoàn chỉnh.

22

Page 23: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Ví dụ minh họa

Xây dựng website BookOnline với các trang web sau

– Trang nhất

– Xem danh sách sách theo danh mục có phân trang

– Xem chi tiết sách

23

Page 24: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012 24

TrangNhat.do

Page 25: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012 25

DanhSachSach.do

Page 26: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012 26

ChiTietSach.do

Page 27: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012 27

Servlet Basic

Page 28: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

service()

doPost()

do… ()

doGet()

Chu kỳ sống của servlet

28

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

Page 29: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chu kỳ sống của servlet

29

- Đượ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

Page 30: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chu kỳ sống của servlet

30

@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(...){...}

}

Page 31: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chu kỳ sống của servlet

31

@WebServlet(name="ServletSample",

urlPatterns={"/ServletSample"})

public class ServletSample

extends HttpServlet {

private ArrayList<DanhMuc> 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(...){...}

}

Page 32: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chu kỳ sống của servlet

32

- 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

Page 33: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chu kỳ sống của servlet

33

- 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

Page 34: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chu kỳ sống của servlet

34

- Đượ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

Page 35: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chu kỳ sống của servlet

35

@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(...){...}

}

Page 36: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Chu kỳ sống của servlet

36

@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(...){...}

}

Page 37: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012 37

Servlet Basic

Page 38: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

Tài liệu tham khảo

Nguyễn Hoàng Anh, Tập bài giảng môn chuyên đề

Java, 2011

Marty Hall, Tập bài giảng J2EE, 2010

38

Page 39: 02. J2EE Servlet Basic 2.0.1

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012

HỎI VÀ ĐÁP

39