72
Trang 1 TÌM HIỂU CÔNG NGHỆ SERVLET + JSP TRÊN ECLIPSE + TOMCAT + MYSQL Nhóm 7: Hồng Thị Mỹ Anh – 11110002 Đậu Thị Ngọc Linh – 11110068 BÁO CÁO GIỮA KỲ MÔN CC & MT PHÁT TRIỂN PHẦN MỀM

Servlet + JSP on TomCat mysql

Embed Size (px)

Citation preview

Page 1: Servlet + JSP on TomCat mysql

Trang 1

TÌM HIỂU CÔNG NGHỆ SERVLET + JSP TRÊN ECLIPSE + TOMCAT + MYSQL

Nhóm 7:Hồng Thị Mỹ Anh – 11110002Đậu Thị Ngọc Linh – 11110068

BÁO CÁO GIỮA KỲMÔN CC & MT PHÁT TRIỂN PHẦN MỀM

Page 2: Servlet + JSP on TomCat mysql

Trang 205/01/2023

Khái niệm

Là công cụ hỗ trợ lập trình đa ngôn ngữ:

C/C++/C#, php, Java,…

Có thể kết hợp nhiều công cụ hỗ trợ khác.

Gồm 3 phần: Platform, JDT, PDE.

Eclipse

Page 3: Servlet + JSP on TomCat mysql

Trang 305/01/2023

Dự án Eclipse ban đầu được IBM thành lập vào 11/2001 và được hiệp hội các nhà cung cấp phần mềm hỗ trợ.

Quỹ Eclipse thành lập vào 1/2004 là tổ chức phi lợi nhuận độc lập hoạt động như người quản lý của cộng đồng Eclipse. Hiện nay, cộng đồng Eclipse bao gồm các cá nhân và các tổ chức từ nhiều lĩnh vực của công nghiệp phần mềm.

Lịch sử phát triển

Page 4: Servlet + JSP on TomCat mysql

Trang 405/01/2023

Lịch sử phát triển

Page 5: Servlet + JSP on TomCat mysql

Trang 505/01/2023

Các phiên bản của Eclipse với version mới nhất

Page 6: Servlet + JSP on TomCat mysql

Trang 605/01/2023

Các phiên bản của Eclipse cho từng ứng dụng riêng biệt:

Page 7: Servlet + JSP on TomCat mysql

Trang 705/01/2023

Các phiên bản của Eclipse cho từng ứng dụng riêng biệt:

Page 8: Servlet + JSP on TomCat mysql

Trang 805/01/2023

Ưu nhược điểm của Eclipse Ưu điểm: Quick Fix (Sửa lỗi nhanh)

Eclipse của IBM - IBM có thư viện SWT để tạo

ứng dụng, Eclipse được phát triển trên thư viện

này.

Nhiều plugin,... hỗ trợ hầu như đầy đủ các loại

ứng dụng Java.

Eclipse hỗ trợ tốt trong các dự án lớn.

Page 9: Servlet + JSP on TomCat mysql

Trang 905/01/2023

Nhược điểm:Nhiều plugin nhưng đôi lúc gây khó khăn khi

config.

Thiếu tính nhất quán vì có nhiều plugin quá.

Eclipse nhiều plugin nhưng chất lượng đa phần là

không đạt.

Ưu nhược điểm của Eclipse

Page 10: Servlet + JSP on TomCat mysql

Trang 1005/01/2023

Apache TomcatKhái niệmLà một Java Servlet được phát triển bởi Apache Software Fondation(ASF). Tomcat thi hành các ứng dụng Java Servlet và JavaServer Pages (JSP) từ Sun Microsystems, và cung cấp một máy chủ HTTP cho ngôn ngữ Java thuần túy để thực thi các chương trình lệnh viết bằng ngôn ngữ Java.

Page 11: Servlet + JSP on TomCat mysql

Trang 1105/01/2023

Tình trạng phát triển

Các thành viên của ASF và các tình nguyện viên riêng lẻ vẫn đang phát triển và duy trì Tomcat.

Phiên bản Tomcat đầu tiên được công bố là phiên bản 3.0.x (các phiên bản trước không được Sun phát hành rộng rãi ra ngoài).

Phiên bản mới nhất của Apache Tomcat là 8.0.15, phát hành vào ngày 07/11/2014.

Page 12: Servlet + JSP on TomCat mysql

Trang 1205/01/2023

Thành phầnTomcat phiên bản 4.x xuất hiện bao gồm Catalina (thiết kế lại của bộ Servlet) và Coyote (một trình kết nối HTTP), Jasper (một thiết kế lại của bộ công cụ JSP)

CatalinaCatalina chính là bộ servlet container của Tomcat. Catalina thực hiện các chi tiết kỹ thuật của Sun Microsystems' đối với servlet và các trang JavaServer (JSP). Người đã xây dựng lên Catalina là Craig McClanahan.

Page 13: Servlet + JSP on TomCat mysql

Trang 1305/01/2023

CoyoteCoyote là bộ phận kết nối HTTP của Tomcat, có cung cấp giao thức HTTP 1.1 cho các máy chủ web hoặc các ứng dụng khác. Coyote nghe ngóng các kết nối đến nó trên cổng TCP được định sẵn trên máy chủ và sau đó trả lời các yêu cầu đến Tomcat để thực thi các yêu cầu và gửi lại trả lời cho máy trạm đã yêu cầu.

Page 14: Servlet + JSP on TomCat mysql

Trang 1405/01/2023

JasperJasper là công cụ JSP của Tomcat. Tomcat 5.x sử dụng Jasper 2 là một thực thi các trang JSP được chỉ rõ của Sun Microsystems. Jasper phân tích các file JSP để biên dịch chúng trong code Java như là các servlets. Tại thời điểm thực thi, Jasper có khả năng tự động dò ra các file JSP và biên dịch chúng.

Page 15: Servlet + JSP on TomCat mysql

Trang 1505/01/2023

MySQL là hệ quản trị cơ sở dữ liệu(CSDL) mã nguồn mở nằm trong nhóm LAMP (Linux – Apache -MySQL – PHP) ,vì MySQL được tích hợp sử dụng chung với apache, PHP. MySQL hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.

MySQLKhái niệm

Page 16: Servlet + JSP on TomCat mysql

Trang 1605/01/2023

• MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương đương với SQL Server của Microsoft).

• MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi người dùng có một tên truy cập và mật khẩu tương ứng để truy xuất đến CSDL.

Một số đặc điểm của MySQL

Page 17: Servlet + JSP on TomCat mysql

Trang 1705/01/2023

• MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu

• Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập và mật khẩu của tài khỏan có quyền sử dụng CSDL đó.

Một số đặc điểm của MySQL

Page 18: Servlet + JSP on TomCat mysql

Trang 1805/01/2023

• Ưu điểm : Mysql có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL chính vì thế nên MySQL được sử dụng và hỗ trợ của những lập trình viên yêu thích mã nguồn mở.

Ưu nhược điểm của MySQL

Page 19: Servlet + JSP on TomCat mysql

Trang 1905/01/2023

• Khuyết điểm: Không bao quát toàn bộ những câu truy vấn cao cấp như SQL Server. Vì vậy Mysql chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành của website, thích hợp cho các ứng dụng có truy cập CSDL trên internet.

Ưu nhược điểm của MySQL

Page 21: Servlet + JSP on TomCat mysql

Trang 2105/01/2023

Nhà phát triển

Microsoft Oracle Oracle

Phiên bản đầu tiên

1989 1995 1980

Sư dung Thương mai Nguồn mở Thương mai Cơ sở dữ liệu như một dịch vu (DBaaS)

không không không

Ngôn ngữ thực hiện

C ++ C và C ++ C và C ++

Server operating systems

Windows FreeBSDLinuxOS XSolarisWindows

AIXHP-UXLinuxOS XSolarisWindowsz/OS

Mô hình cơ sở dữ liệu

DBMS quan hệ DBMS quan hệ DBMS quan hệ

Page 22: Servlet + JSP on TomCat mysql

Trang 2205/01/2023

Sơ đồ dữ liệu co co co

SQL co co co

API và các access methods khác

OLE DBTabular Data Stream (TDS)ADO.NETJDBCODBC

ADO.NETJDBCODBC

ODP.NETOracle Call Interface (OCI)JDBCODBC

Page 23: Servlet + JSP on TomCat mysql

Trang 2305/01/2023

Ngôn ngữ lập trình được hỗ trợ

.NetJavaPHPPythonRubyVisual Basic

AdaCC#C++DEiffelErlangHaskellJavaObjective-COCamlPerlPHPPythonRubySchemeTcl

CC#C++ClojureCobolEiffelErlangFortranGroovyHaskellJavaJavaScriptLispObjective COCamlPerlPHPPythonRRubyScalaTclVisual Basic

Page 24: Servlet + JSP on TomCat mysql

Trang 2405/01/2023

Server-side scripts 

Transact-SQL and .NET languages

có  PL/SQL 

Triggers có có có

Phương pháp phân vùng 

bảng có thể được phân phối qua một số tập tin (phân vùng ngang), nhưng không có sharding

phân vùng ngang trong MySQL Cluster

phân vùng ngang 

Phương pháp Replication 

có, nhưng tùy thuộc vào phiên bản SQL-Server

Nhân rộng master-master Master-slave nhân rộng MySQL Cluster

Nhân rộng master-master nhân rộng Master-slave

Page 25: Servlet + JSP on TomCat mysql

Trang 2505/01/2023

Servlet là gì?

• Nhận client request.• Lấy thông tin từ request.• Xử lý nghiệp vụ và phát sinh nội dung(bằng

cách truy cập database,….).• Tạo và gửi request tới client hoặc gửi request

tới servlet hoặc JSP khác.

Page 26: Servlet + JSP on TomCat mysql

Trang 2605/01/2023

Ưu điểm Servlet

• Có nhiều web servers hỗ trợ servlet.• Truy cập được mọi java APIs.• Độ tin cậy cao,hiệu năng tốt,dễ mở rộng.• Độc lập flatform và server.• An toàn.• Hầu hết server cho phép load lại server khi có

sự thay đổi.

Page 27: Servlet + JSP on TomCat mysql

Trang 2705/01/2023

Mô hình Servlet request và response

Page 28: Servlet + JSP on TomCat mysql

Trang 2805/01/2023

Request và response

• Request là gì?o Thông tin được gửi từ client đến server.

Ai tạo ra request. Dữ liệu người dùng nhập vào và gửi đi. HTTP header.

• Response là gì?o Thông tin được gửi đến client từ server.

Dữ liệu text,image…HTTP headers,cookies…..

Page 29: Servlet + JSP on TomCat mysql

Trang 2905/01/2023

HTTP Get và Post

• Các client requests thông dụng nhất:o HTTP Get & HTTP Post.

• Get requests:o Thông tin người dùng nhập vào đính kèm trong URL

dưới dạng 1 query string.o Chỉ gửi được lượng dữ liệu giới hạn.

• Post requests:o Thông tin người dùng nhập vào được gửi dưới dạng dữ

liệu(không đính kèm vào URL).o Gửi được lượng dữ liệu bất kỳ.

Page 30: Servlet + JSP on TomCat mysql

Trang 3005/01/2023

Kiến trúc của servlet

Page 31: Servlet + JSP on TomCat mysql

Trang 3105/01/2023

Vòng đời servlet

Page 32: Servlet + JSP on TomCat mysql

Trang 3205/01/2023

Thiết lập servlet

• Phương thức init có tham số kiểu servletConfig.

• ServletConfig có phương thức đọc tham số được thiết lập web.xml

• Để thiết lập,viết đè phương thức init(),nhưng init(ServletConfig) thì không.

Page 33: Servlet + JSP on TomCat mysql

Trang 3305/01/2023

Hàm service()

• Gọi hàm service của servlet và truyền hai đối tượng truy vấn và trả lời (request, reponse objects) vào hàm này. Hàm service, sẽ xem truy vấn được gửi đến tương ứng với phương thức HTTP nào để từ đó phân bổ (dispatch) truy vấn này đến phương thức xử lý tương ứng của servlet, tức các phương thức doXXX đề cập dưới đây.

Page 34: Servlet + JSP on TomCat mysql

Trang 3405/01/2023

Hủy servlet

• Loại bỏ servlet khi:o Server shutdown.o Servlet không hoạt động trong thời gian dài.o Server cần giải phóng tài nguyên.

• Trước khi giải phóng phương thức destroy()sẽ được goi.o Có thể sử dụng để xoa,đóng kết nối cơ sở dữ liệu.

Page 35: Servlet + JSP on TomCat mysql

Trang 3505/01/2023

Các bước hiện thực servlet

• Tạo 1 lớp kế thừa HttpServlet• Ghi đè phương thức doGet() hay doPost()• HttpServletRequest

o getParameter(“name”);• HttpServletResponse

o Thiết lập nội dungo Lấy đối tượng PrintWriter.oGửi text về client nhờ PrintWriter.

Page 36: Servlet + JSP on TomCat mysql

Trang 3605/01/2023

Page 37: Servlet + JSP on TomCat mysql

Trang 3705/01/2023

Lấy thông tin từ truy vấn-Request

Page 38: Servlet + JSP on TomCat mysql

Trang 3805/01/2023

Lấy dữ liệu

• Sử dụng đối tượng HttpServletRequest• Lấy giá trị thông tin phần header

hrd:getHeader(“hdr”).• Lấy tất cả các tên biến chứa thông tin trong

phần header:getHeaderNames().• Các phương thức cho các thông tin

khác:getCookies,getContentType,getMethod…

Page 39: Servlet + JSP on TomCat mysql

Trang 3905/01/2023

Nhập dữ liêu từ form

• Dùng html form để gửi dữ liệu lên server.<form action=……,method

=….>…</form>o action:địa chỉ trang web hay servlet nhận dữ liệu

của form.o method:phương thức gửi dữ liệu lên trang web xử

lý ở server.(Get hay Post).

Page 40: Servlet + JSP on TomCat mysql

Trang 4005/01/2023

Ví du về get

Page 41: Servlet + JSP on TomCat mysql

Trang 4105/01/2023

Lấy giá trị gưi lên từ client

• HttpServletRequest requesto Lấy giá trị của x:request.getParameter(“x”);o Lấy nhiều giá trị của x:

request.getParameterValues(“x”);o Lấy các tên biến gửi lên từ client:Request.getParameterNames();

Page 42: Servlet + JSP on TomCat mysql

Trang 4205/01/2023

Gưi trả dữ liệu về client-response

Page 43: Servlet + JSP on TomCat mysql

Trang 4305/01/2023

Thiết lập thông tin trạng thái đáp trả

• Sử dụng HttpServletResponseo setStatus(int sc):o sendError(sc),sendError(sc,message):sử dụng khi

có lỗi.Ví dụ:400,không tìm thấy.o sendRedirect(String location):chuyển trang.Ví dụ: response.sendRedirect(“hello.html”);

Page 44: Servlet + JSP on TomCat mysql

Trang 4405/01/2023

Thiết lập responseHeader

• Sử dụng HTTPServletResponse:o setHeader(String hdr,String

value),setIntHeader(String hdr,int value).oVídụ:response.setHeader(“refresh”,”10;url=http://

127.0.0.1/sv.html”);• addHeader(String hdr,String

value),addIntHeader(String hdr,int value).

Page 45: Servlet + JSP on TomCat mysql

Trang 4505/01/2023

Các responseHeader khác

• Lớp HTTPServletResponse cung cấp các setters cho một số header khác:o setContentTypeo setContentLengtho setDateHeadero setCharacterEncoding

• Ngoài ra còn có:addCookies(Cookie),sendRedirect(String url).

Page 46: Servlet + JSP on TomCat mysql

Trang 4605/01/2023

Trang JSP là gì?

• Là 1 tài liệu text có thể trả về cả static và dynamic content cho trình duyệt.

• Static content và dynamic content có thể được ghép lẫn với nhau.

• Static content:HTML,XML,Text.• Dynamic content:

oMã java,các thẻ Custom tags.o Các thuộc tính hiển thị của javabean.

Page 47: Servlet + JSP on TomCat mysql

Trang 4705/01/2023

Trang JSP là gì?

• JSP là mở rộng của Servlet.trong thực tế, JSP và servlet được sử dụng đồng thời để phát triển ứng dụng.

• Trong mô hình MVC,JSP xử lý phần view,Servlet xử lý phần controller.

Page 48: Servlet + JSP on TomCat mysql

Trang 4805/01/2023

Ưu điểm của JSP

• Trong Servlet,viết thẻ HTML không tách biệt với code ->sửa đổi giao diện phức tạp.

• JSP được phát triển để khắc phục điều này.o Tách biệt nội dung và cách trình bày.oĐơn giản hóa việc phát triển ứng dụng web với

JSP,Javabean,Custom tags.oHỗ trợ tái sử dụng phần mềm qua các

components(javaBean,Custom tags).o Tự động biên dịch lại các trang JSP khi có sự thay đổi.

Page 49: Servlet + JSP on TomCat mysql

Trang 4905/01/2023

So sánh JSP, ASP, PHPJSP ASP PHP-Phần động được viết bằng java, chứ không phải bằng những ngôn ngữ script:VBScript,JavaScript.-Hỗ trợ tốt hơn với các ứng dung phức tạp cần các thành phần sư dung lại.- JSP hỗ trợ mở rộng tag với custom tag.

-ASP là công nghệ của Microsoft.-Phần động được viết bằng những ngôn ngữ script.

-Đòi hỏi chúng ta phải học như một ngôn ngữ mới.

-JSP chạy được trên nhiều hệ điều hành và web server khác nhau.

- chay được trên ít hệ điều hành và web server khác nhau.

Page 50: Servlet + JSP on TomCat mysql

Trang 5005/01/2023

-Tốc độ xư lý hơi chậm. Tốc độ xư lý rất chậm. Tốc độ xư lý nhanh, hiệu quả cao.

- Số lượng nhà cung cấp hosting ít, kho tìm

- Số lượng nhà cung cấp hosting không nhiều, vì vậy kho cho việc lựa chọn

- Số lượng nhà cung cấp hosting nhiều, dễ lựa chọn

- Chi phí giá thành cao - Chi phí giá thành trung bình (do một phần phải mua bản quền)

- Chi phí giá thành thấp (ngôn ngữ free không tốn chi phí mua bản quyền)

- Công cu và công nghệ hỗ trợ tương đối nhiều.

- Công cụ và công nghệ hỗ trợ ít, kho tìm

- Các công cụ và công nghệ hỗ trợ phong phú, đa dang

Page 51: Servlet + JSP on TomCat mysql

Trang 5105/01/2023

Vòng đời của JSP

Page 52: Servlet + JSP on TomCat mysql

Trang 5205/01/2023

JSP làm việc như thế nào?

Page 53: Servlet + JSP on TomCat mysql

Trang 5305/01/2023

Các bước xư lý trang JSP

Page 54: Servlet + JSP on TomCat mysql

Trang 5405/01/2023

Ví du HelloWorld.jsp

<html><head><title>Hello world</title></head><body>

<% out.println("Hello World"); %></body></html>

Page 55: Servlet + JSP on TomCat mysql

Trang 5505/01/2023

Các thành phần chính của JSP

• Dẫn hướng_Directo Cho phép điều khiển cấu trúc servlet

• Các phần tử kịch bản-script elementso Dùng viết code java.

• Hành động-Actiono Dùng để kiểm soát các servlet.

Page 56: Servlet + JSP on TomCat mysql

Trang 5605/01/2023

Ví du

Page 57: Servlet + JSP on TomCat mysql

Trang 5705/01/2023

Các phần tư Scripting(1)

• Có 3 cách nhúng code vào HTML.o Thẻ khai báo (declaration)o Thẻ văn lệnh con (scriptlet)o Thẻ biểu thức (expression) 

Page 58: Servlet + JSP on TomCat mysql

Trang 5805/01/2023

Các phần tư Scripting(2)

•  Thẻ biểu thức (expression) : dùng để hiển thị kết quả của một biểu thức.

• Cú pháp:<% = expression%> hay<jsp:expression>expression</jsp:expression>• Ví dụ: <body>

<p> Today's date: <%= (new java.util.Date()).toLocaleString()%> </p> </body>

Page 59: Servlet + JSP on TomCat mysql

Trang 5905/01/2023

Các phần tư Scripting(3)

• Thẻ khai báo (declaration):định nghĩa biến hoặc phương thức trong JSP.

• Cú pháp: <%! declaration; %>Hay

<jsp:declaration> code fragment </jsp:declaration>• Ví dụ:

<%! int i = 0; %> Gia tri cua i la:<%= i %>

Page 60: Servlet + JSP on TomCat mysql

Trang 6005/01/2023

Các phần tư Scripting(4)

• Thẻ văn lệnh con (scriptlet): dùng để chứa code java.

• Cú pháp: <% code fragment %>Hay <jsp:scriptlet> code fragment

</jsp:scriptlet>• Ví dụ: <body> Hello World!<br/> <% out.println("Your IP address is " + request.getRemoteAddr()); %> </body>

Page 61: Servlet + JSP on TomCat mysql

Trang 6105/01/2023

JSP directives(1)

• Cú pháp:<%@ directive attribute="value" %>• Có 3 loại thẻ chính:o Chỉ thị page.o Chỉ thị include.o Chỉ thị taglib.

Page 62: Servlet + JSP on TomCat mysql

Trang 6205/01/2023

JSP directives(2)

• Chỉ thị page:có nhiều tuỳ chọn, trong đó có :- import : nhập một gói (package) java. Chỉ thị này sẽ được chuyển thành chỉ dẫn import trong servlet.- contentType : định nghĩa loại nội dung của trang sẽ được phát sinh.- pageEncoding : định nghĩa chuẩn mã hoá trang phát sinh sử dụng.- language : định nghĩa ngôn ngữ sử dụng.

Page 63: Servlet + JSP on TomCat mysql

Trang 6305/01/2023

JSP directives(3)

• Cú pháp: <%@ page ... %>• Ví du: <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.List, java.util.Date" language="java" %><html><tilte> JSP Elements</title><head><h1>JSP Elements</h1></head><body></body> </html>

Page 64: Servlet + JSP on TomCat mysql

Trang 6405/01/2023

JSP directives(4)

•  Chỉ thị include : chỉ định cho trình biên dịch gộp tập tin vào trang.

• Cú pháp: <%@ include ... %>Hay  <jsp:include ... />

Page 65: Servlet + JSP on TomCat mysql

Trang 6505/01/2023

JSP directives(5)

• Chỉ thị taglib : khai báo việc dùng một thư viện thẻ trong trang.

• Cú pháp: <%@ taglib ... %>• Ví du:<%@taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

Page 66: Servlet + JSP on TomCat mysql

Trang 6605/01/2023

Các JSP action chuẩn(1)

• <jsp: forward>:cho phép jsp gửi request hiện tai đến servlet hay jsp khác.o Cú pháp: <jsp:forward page="Relative URL" />o Ví du: <jsp:forward page="date.jsp" />

• <jsp:param>: được sử dụng là thuộc tính con của các action jsp:include,jsp:plugin….o Cú pháp:

Page 67: Servlet + JSP on TomCat mysql

Trang 6705/01/2023

Các JSP action chuẩn(2)

•  <jsp:plugin> : thực thi hay hiển thị một đối tượng, đối tượng này có thể là một applet hay bean. 

• <jsp:use bean>:khởi tạo hay tái sử dụng javabean đã tồn tại để dùng trong trang jsp.o <jsp:useBean id="name" class="package.class" />

• <jsp:setProperty>:gán giá trị cho một thuộc tính của java bean.o <jsp:setProperty name = "myName"property =

"someProperty" .../>

Page 68: Servlet + JSP on TomCat mysql

Trang 6805/01/2023

Các JSP action chuẩn(3)

• <jsp:getProperty>:lấy giá trị một thuộc tính của một JavaBean.o <jsp:getProperty property="username"

name="userBean" />• Ví dụ:

Page 69: Servlet + JSP on TomCat mysql

Trang 6905/01/2023

Ví dụ(1)

Page 70: Servlet + JSP on TomCat mysql

Trang 7005/01/2023

Ví dụ(2)

Page 71: Servlet + JSP on TomCat mysql

Trang 7105/01/2023

DEMO CHƯƠNG TRÌNH

Page 72: Servlet + JSP on TomCat mysql

Trang 7205/01/2023

Cảm ơn Thầy và các bạn đã theo dõi!