BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI ĐẠI HỌ HỌC CÔNG NGHỆ NGHỆ TPHCM *****
BÁO CÁO ĐỒ ÁN CHUYÊN ĐỀ 2
WEBSITE BÁN NHẠC CỤ SỬ D DỤNG JAVA SERVLET Ngành : CÔNG NGHỆ NGHỆ THÔNG TIN Chuyên ngành : MẠNG MÁY TÍNH Giảng viên hướ ng ng dẫn:
THẦY THÁI HUY TÂN
Sinh viên thực hiện : Họ và tên
MSSV
Lớ p
Nguyễn Đăng Quang
1311061016
13DTHM02
Tr ịnh Tuấn Vủ
1311061407
13DTHM02
TP.HCM - Tháng 04, năm 2017
1. Giớ Giớ i thiệ thiệu về về Servlet ọng đang đượ c tậ p Hiện nay, trong lậ p trình có một xu hướ ng ng r ất quan tr ọng trung phát triển ứng dụng, đó là xây dựng các chương trình dị ch vụ Java ở phía phía máy chủ (Server). Servlet là thành phần chính đượ c sử dụng để phát triển các chương trình dịch vụ Java ở phía phía máy chủ. Các Servlet là các chương trình Java thự c hiện ở các các ứng
phía máy máy Client Client)) để để dụng Server (tên gọi “Servlet” cũng gần gi giống như “Applet” ở phía tr ả lờ i cho các yêu cầu của Client. Các Servlet không bị ràng buộc chặt vớ i một giao thức Client-Server cụ thể nào cả, nhưng giao thức thường đượ c sử dụng là HTTP, do vậy, khi nói tới Servlet nghĩa là nói tớ i HTTP Servlet. Servlet là sự phát triển mở r ộng của CGI để đảm bảo Server thực hiện đượ c các chức năng của mình. Ta có thể sử dụng Servlet của Java để tu tuỳ ch chỉnh lại một dịch vụ bất k ỳ, ỳ, như Web Server, Mail Server, v.v. Web Server hiển thị các tư liệu đượ c viết trong HTML và hồi đáp cho yêu cầu của ngườ i sử dụng qua HTTP. Các tư liệu HTML chứa các văn bản đượ c
đánh dấu (định dạng) để các trình duyệt như IE, Netscape đọc đượ c. c. Một trình duyệt chấ p nhận đầu vào ở dạng HTML, khi ngườ i sử dụng nhấn một nút để yêu cầu một số thông tin nào đó, mộ t Servlet đơn giản đượ c gọi
để xử lý các yêu cầu đó. Các công việ c chính của Servlet đượ c mô tả khái quát trong hình 1, bao gồm:
Đọc các dữ li ệu tường minh đượ c Client gửi đến t ừ các yêu cầu (dữ liệu theo các khuôn dạng – form form data).
Đọc các dữ liệu không tường minh đượ c Client gửi đến từ các yêu cầu (dữ liệu trong phần đầu của yêu cầu – request request headers).
Xử lý và lưu t r ữ các dữ liệu đượ c cung cấp dướ i dạng HTML.
Gửi tr ả lờ i dữ liệu tườ ng ng minh cho Client (dạng HTML), cung cấ p các nội
dung động, ví dụ tr ả lờ i yêu cầu Client về các câu truy vấn vào các CSDL.
Quản lý các thông tin tr ạng thái và tr ả lờ i dữ liệu không tườ ng ng minh cho Client (các mã tr ạng thái và các phần đầu của tr ả lờ i). i).
JDBC
Client
Servlet
CSDL
JNI
Chương trình ứng dụng
RMI
HTTP
Chương trình Java
XML
Servlet
Chương trình B2B ...
Hình 1. Vai trò của Servlet Viết một Servlet là tương đối dễ. Ta chỉ cần có Tomcat, nó là tổ hợ p của Java Server PagesTM 1.1 và Servl Servlet etss 2.2. 2. 2. Tomca omcatt có th t hể nạ p miễn phí từ http://java.sun.com/products/jsp/tomcat/, ph http://java.sun.com/products/jsp/tomcat/, phần cài đặt sẽ đượ c mô tả ở ph phần sau. Các Servlet cũng đượ c sử dụng thay cho k ịch bản giao diện cổng chung CGI Script. Khi tạo ra một trang Web, ta cũng sẽ tạo ra một ứng dụng Web.
Trướ c khi sử dụng Servlet để tạo ra các ứng dụng Web, chúng ta đi tìm hiể u xem có những khả năng lựa chọn nào khác để phát triển những ứng dụng Web.
CGI: CGI: Theo cách thông thường, để bổ sung các chức năng vào cho một Web Server người ta hay sử dụng Common Gateway Interface (CGI), một
giao diện độc lập với ngôn ngữ cho phép một Server khởi động một tiến
trình ngoại để nhận thông tin được yêu cầu thông qua các biến môi trường. Mỗi yêu cầu được trả lời bởi một tiến trình riêng thông qua một đại diện riêng của một chương trình CGI hoặc bởi một kịch bản CGI (thường được viết bằng ngôn ngữ thông dịch như Perl).
Fast CGI: Open Marked đã phát triển một chuẩn khác thay cho CGI đượ c gọi là là Fast CGI. Fast Fast CGI hành động giống như CGI. Nó khác ở ch ch ỗ, Fast CGI tạo ra một tiến trình bền vững cho từng chương trình.
ợ để Một số chương trình ứng dụng khác như ASP và Java Script cũng hỗ tr ợ để tạo ra các ứng dụng Web. ASP đượ c Microsoft phát triển để tạo ra các nội dung cho các trang Web động. Trong ASP, trang HTML có th ể nhúng những phần nhỏ đượ c viết b ằng VBScript hoặc JScript. Netscape đưa ra kỹ thuật đượ c g ọi là JavaScript, cho phép đưa các phầ n mã lệnh nhỏ nhúng vào trang HMTL, nhằm tạo ra những n ội dung Web động một cách linh họat hơn. Ngoài ra, Ne Netscape còn cung cấ p NSA NSAPI, Mic Microsoft đưa ra ISAPI cho các Web Server của họ.
Servlet có một số ưu điểm so vớ i CGI:
Một Servlet không làm việc trong một tiến trình riêng. Điều này loại bỏ được việc phải tạo ra quá nhiều tiến trình mới cho mỗi yêu cầu.
Một Servlet sẽ thường trực trong bộ nhớ giữa các yêu cầu, trong khi các chương trình CGI cần phải tải xuống và được khởi động cho từng yêu cầu CGI.
Chỉ cần một Servlet trả lời đồng thời cho tất cả các yêu cầu. Điều này cho phép tiết kiệm được bộ nhớ và và đảm bảo nó dễ dàng quản quản lý được dữ liệu một cách thống nhất.
Một Servlet có thể thực hiện bởi một Servlet Engine trong phạm vi kiểm soát Sandbox để đảm bảo an toàn trong việc sử dụng các Servlet. Các lớ p Servlet của Java có thể đượ c nạ p tự động để mở r ộng các chức
năng của Server. Các Servlet của Java thực hiện bên trong JVM. Chúng được đảm bảo an toàn và chuyển đổi tương thích giữa các hệ điều hành và giữa các Server với nhau. Điều này khác vớ i các Applet, Servlet ch ỉ thao tác đượ c trong miền của một Server. Servlet API đượ c phát triển dựa trên những điểm mạnh của Java platform nhằm giải quyết v ấn đề c ủa CGI và Server API. Nó là một API đơn giản, h ỗ tr ợ ợ tất cả các Web server và thậm chí cho phép các ứng dụng máy chủ dùng để kiểm tra và quản lý các công việc trên Server. Nó giải quyết vấn đề thực thi bằng việc thực hiện tất cả các yêu cầu như các luồng Thread trong quá trình x ử lý, hoặc việc cân bằng tải trên một Server trong các cụm máy tính Cluster. Các Servlet d ễ dàng chia sẻ tài nguyên vớ i nhau.
Trong định nghĩa Servlet, vấn đề b ảo mật đượ c c ải ti ến theo nhiều cách. Trướ c hết, bạn hiếm khi thực thi đượ c các câu lệnh trên Shell vớ i dữ liệu cung cấ p bởi ngườ i dùng mà Java API đã cung cấ p vớ i những khả năng truy cập đế n tất cả các hàm thông dụng. Bạn có thể sử dụng Java Mail để đọc và gửi mail, k ết nối vào các CSDL (thông qua JDBC), tệ p lớ p (.cl (.class) và nh ững lớp liên quan để truy cậ p hệ thống tệ p, CS CSDL, RM RMI, CO CORBA, En Enterprise Java Beans (EJ (EJB), …
2. Ưu điểm điểm củ của Servlet Servlet đượ c sử dụng để thay thế cho những công nghệ Web động. Việc sử dụng Servlet mang lại những lợ i thế:
Dễ di di chuyể n. n. Servlet đượ c viết bằng Java nên nó có tính di độ ng cao, thực
hiện đượ c trên nhiều h ệ điều hành, trên các Web Server khác nhau. Khái niệm “Viết một lần, chạy ở m mọi nơi” cũng rất đúng vớ i Servlet.
M ạnh m ẽ . Servlet hỗ
tr ợ ợ r ất hi ệu qu ả cho việc s ử d ụng các giao diện lõi
API như lậ p trình mạng, xử lý đa luồng, xử lý ảnh, nén dữ li ệu, k ết n ối các CSDL, bảo mật, xử lý phân tán và tri ệu gọi từ xa RMI, CORBA, v.v.
Nó cũng thích hợp h ợp để trao đổi tin, truyền thông giữa Client và Server một cách bình thườ ng. ng.
Hiệu qu ả.
Servlet có tính hiệu qu ả cao. Một khi đượ c t ải v ề, nó sẽ đượ c
của máy chủ. Servlet duy trì các tr ạng thái của nó, do lưu lại trong bộ nhớ c vậy những tài nguyên ngoại như việc k ết nối vớ i CSDL cũng sẽ được lưu giữ lại.
An toàn.
Bở i vì Servlet đượ c vi ết b ằng Java nên nó k ế th ừa đượ c tính an
toàn của Java. Cơ chế tự động dọn rác và việc không sử dụng con tr ỏ của Java giúp cho Servlet thoát khỏi nhiều công việc quản lý bộ nhớ. Đồng thờ i nó xử lý các lỗi r ất ất an toàn theo cơ chế xử lý ngoại lệ của Java.
Tính tích hợ p. Các Servlet đượ c
tích hợ p v ớ i các Server. Chúng cộng tác
vớ i các Server tốt hơn các chương trình CGI.
Tính linh hoạt. Các Servlet hoàn toàn mềm dẻo. Một HTTP Servlet đượ c sử
dụng để t ạo ra một trang Web, sau đó ta có thể s ử dụng thẻ để
đưa nó vào trang Web tĩnh, hoặc sử dụng vớ i các Servlet khác để lọc ra các nội dung cần thiết.
3. Môi trườ ng ng thự thự c hiệ hiện Servlet
ng là sự mở r ộng (k ế thừa) các lớ p chuẩn Java trong gói Các Servlet thườ ng ja javax.se .servlet (ch (chứa các khuôn mẫu cơ bản của Servlet) và javax.servlet.http (mở r r ộng các khuôn mẫu cơ bản của Servlet và các yêu cầu theo HTTP). Servlet là một lớ p Java và vì thế cần đượ c thực thi trên một máy ảo Java (JVM) và bằng một dịch vụ đượ c gọi là mô tơ Servlet (Servlet Engine). Servlet Engine tải lớ p Se Servlet lần đầu tiên nó đượ c yêu cầu, hoặc ngay khi Servlet Engine đượ c bắt
đầu. Servlet ngừng tải để xử lý nhiều yêu cầu khi Servlet Engine bị tắt hoặc nó bị dừng lại.
Như vậy, để d ịch và thực hiện các Servlet, việc có các Servlet là chưa đủ, mà cần phải có một mô tơ Servlet để kiểm tra và tri ển khai chúng. Hiện nay một số mô tơ tương thích vớ i nhiều lo loại Web Server khác nhau, nhưng nguyên lý hành
động tương đối giống nhau. Ngườ i ta chia chúng thành ba lo ại.
Mô tơ Servlet đơn
Mô tơ Servlet gộ p
Mô tơ Servlet nhúng. 3.1 Mô tơ Servlet đơn
Đây là loại Server đượ c xây dựng để h ỗ tr ợ ợ cho cho các Servlet. Ưu điểm của nó là mọi th ứ làm việc v ớ i các hộ p k ết quả đầu ra r ất phong phú. Tuy nhiên, nó có
nhược điểm là ta phải chờ nh những phiên bản mớ i c ủa Web Server để nhận đượ c ợ m mớ i nhất cho Servlet. Hiện nay có các loại mô tơ đơn sau: những hỗ tr ợ
Java Server Web Development (JSWDK) của Sun Microsystem:
đượ c
viết hoàn toàn bằng Java: Java: http://java.sun.com.products/servlet/. Nó đượ c sử dụng
như là một Server độc lập để kiểm tra các Servlet và các trang JSP trướ c khi phát triển thành một Web Server thực sự.
Jagsaw Server của WWW Consortium, cũng đượ c viết bằng Java. Chi tiết
hơn, xem http://www.w3.org/Jigsaw.
ợ để Netscape Enterprise Enterprise Server. Đây là Web Server r ất nổi tiếng, nó hỗ tr ợ để xây dựng Servlet.
Lotus Domino Go WebServer.
Một lo ại Web Server khác cũng hỗ tr ợ để ợ để
xây dựng Servlet.
3.2 Mô tơ Servlet gộp gộp Servlet gộ p là lo loại mô tơ đượ c viết cho nhiều loại Server khác nhau, k ể cả Apache, Fast Track Server, Enterprise Server của Netscape, Personal Web Server, v.v. Hiện nay có các loại sau:
Apache Tomcat: Mô tơ này hỗ tr ợ ợ thêm thêm cho Apache.
Nó đượ c sử dụng
như là một Server độc l ập để kiểm tra các Servlet và các trang JSP, ho ặc đượ c tích hợ p vào Ap Apache Web Server, http://java.sun.com.products/servlet/.
.Jrun của Live Software: Jrun là
mô tơ cho Servlet và JSP, h ỗ tr ợ đầy đủ t r ợ đầy
Servlet API trong các Web Server ph ổ biến trên mọi hệ điều hành, http://www.allaire.com.products/jrun/.
WebSphere Application Server của IBM: còn đượ c gọi là ServletExpress.
ServletExec của New Atlanta:
ServletExec là mô tơ cho Servlet và JSP, hỗ
tr ợ đầy Servlett API API tro trong các cá c Web Web Server Server ph ổ biến trên mọi hệ điều hành, ợ đầy đủ Servle http://newatlanta.com/.
3.3 Mô tơ Servlet nhúng Loại mô tơ này có thể nhúng vào phần mềm ứng d ụng khác. Hiện nay có các loại sau:
Java Java Server Server Engin Enginee của Sun. Đây là loại mô tơ đượ c viết hoàn toàn bằng Java
và là Web Server đầu tiên hỗ tr ợ đầy ợ đầy đủ cho các đặc tả của Servlet 2.1 và JSP 1.0, http://www.sun.com.software/jwebserver/try. ry.
Nexus Web Server Server của Anders Kristensen. Nó có thể dễ dàng nhúng vào
các chương trình ứ ng dụng Java.
4. Mã nguồ nguồn website bán nhạ nhạc cụ cụ 4.1 Môi trườ ng ng chạ chạy ứ ng ng dụ dụng
Source code : Netbean IDE 8.2
Giả lậ p server : Glassfish Glassfish 4.1.1
Database trên PC : Navicat Premium
Database trên web MySQL : AppServ
Browser : Cốc Cốc, Firefox, IE
4.2 Kiế Kiến trúc project 4.2. 4.2.1 1 Ne N etbe tbean
Tên project : MusicShop
Hình 4.2.1. Kiến trúc project
Web Pages : chứa nội dung chính về giao diện website (.jsp) và bao gồm cả trang user & admin
Connect : k ết nối database
Controller : xử lý dữ liệu đọc từ Web Pages do user nhậ p vào và truyền
vào model (cơ sở d dữ liệu)
Model : xử lý dữ liệu chuyển từ Controller, lấy (get) hoặc truyền vào (set) database (Navicat)
4.2. 4.2.3 3 D atab ataba ase
AppServ localhost Tên database : musicshop
Hình 4.2.3.1 Database trên localhost Navicat
Hình 4.2.3.2 Database trên PC – Navicat Navicat
4.2.3 4.2.3 Da D anh sách sách F i le Type ypes 4.2.3.1 4.2. 3.1 W We eb Pag es
Trang index.jsp : trang ch ủ của trang web và là trang mặc định khi chạy Project
Giao diện client (user) ch ứa các chức năng chính :
Register.jsp : đăng ký
Login.jsp : đăng nhậ p
MyAcount.jsp MyAcount.jsp : giao diện cậ p nhật và xem lịch sử mua hàng
CheckOut.jsp : trang giỏ hàng
CheckOutStep.jsp CheckOutStep.jsp : chọn hình thức giao hàng
Deal.jsp : thanh toán khi đăng nhậ p
Delivery.jsp : thanh toán không cần đăng nhậ p
Review.jsp : đánh giá sả n phẩm (không cần đăng nhậ p)
Contact.jsp : liên lạc
Navigate.jsp : trang trang chuyển hướ ng ng cho user sử dụng Product.jsp : trang thể hiện các sản phẩm (theo loại và nhãn hiệu)
Single.jsp : trang th ể hiện thông tin của 1 sản phẩm
Thankyou.jsp : trang cám ơn khi user mua hàng
Thankyourcontact.jsp Thankyourcontact.jsp : trang cám ơn khi client liên lạ l ạc
Thankyoureview.jsp Thankyoureview.jsp : trang cám ơn khi client đánh giá
Thankyounewsletter.jsp Thankyounewsletter.jsp : trang cám ơn khi client đăng ký theo dõi qua email
Giao diện admin (trang qu ản lý) gồm các chức năng chính :
Nằm trong đườ ng ng dẫn MusicShop/Web MusicShop/Web Pages/admin/ Pages/admin/
Manager_product.jsp Manager_product.jsp : quản lý sản phẩm
Insert_product.jsp : thêm s ản phẩm
Update_product.jsp Update_product.jsp : cậ p nhật, sửa thông tin sản phẩm
Manager_category.jsp Manager_category.jsp : quản lý danh mục
Insert_category.jsp Insert_category.jsp : thêm danh mục
Update_category.jsp Update_category.jsp : cậ p nhật, sửa danh mục
Manager_brand.jsp Manager_brand.jsp : quản lý thương hiệ u
Insert_brand.jsp : thêm thương hiệ u
Update_brand.jsp Update_brand.jsp : cậ p nhật, sửa thương hiệu
Manager_contact.jsp Manager_contact.jsp : quản lý liên hệ
Manager_newsletter.jsp Manager_newsletter.jsp : quản lý đăng ký theo dõi qua email
Manager_user.jsp Manager_user.jsp : quản lý user
Manger_chart.jsp Manger_chart.jsp : biểu đồ so sánh danh mục và số lượ ng ng sp
4.2.3.2 4.2.3. 2 So S ource ur ce P ackag ckag es
Connect
DBAccess.java : k ết nối database
Controller
AdminUserServlet.java AdminUserServlet.java : xử lý tác vụ từ trang đăng nhậ p admin
CartServlet.java CartServlet.java : xử lý tác vụ giỏ hàng của user
CheckEmailServlet.java CheckEmailServlet.java : kiểm tra tồn tại tên user đăng nhậ p trong database hay không
ContactServlet.java : x ử lý thông tin user g ửi liên hệ
CheckOutServlet.java CheckOutServlet.java : xử lý thông tin mua hàng
DeliveryServlet.java DeliveryServlet.java : xử lý tác vụ thanh toán của user
LogoutAdminServlet.java LogoutAdminServlet.java : xử lý tác vụ đăng xuất admin
ManagerProductServlet.java ManagerProductServlet.java : xử lý tác vụ quản lý sản phẩm
ManagerBrandServlet.java ManagerBrandServlet.java : xử lý tác vụ quản lý thương hiệu
ManagerCategoryServlet.java ManagerCategoryServlet.java : xử lý tác vụ quản lý danh mục
ReviewServlet.java ReviewServlet.java : xử lý tác vụ user gửi đánh giá
UploadProductServlet.java UploadProductServlet.java : xử lý tác vụ upload hình ảnh sản phẩm
UserServlet.java UserServlet.java : xử lý tác vụ user đăng nhập, đăng ký, mua hàng thanh toán
Get
BillDetailGet.java
BillGet.java
BrandGet.java
CategoryGet.java
ChartGet.java
ContactGet.java
NewsletterGet.java NewsletterGet.java
ProductGet.java
ReviewGet.java
UserAdminGet.java
UserGet.java
Model
Bill.java
BillDetail.java
Brand.java
Cart.java
Category.java
Contact.java
Item.java
Newsletter.java
Product.java
Review.java
User.java
UseraAdmin.java
Value.java
4.2.4 Mã M ã nguồn user đăng nhậ p
Login.jsp
UserServlet.java
UserGet.java
Login.jsp : trang đăng nhậ p
Khi user nhấn “Đăng nhập”, tức truyền lệnh “submit” và thực hiện lệnh name
= “command”, giá trị value= “login” trong UserServlet.java thuộ c packages Controller
UserServlet.java
4.2.4 Mã M ã nguồn user đăng ký
Register.jsp
UserServlet.java
UserGet.java
Đoạn java script kiểm tra tên user xem có trùng khớ p với user đã đăng ký nào hay không để tr ả lờ i k ết quả
CheckEmailServlet.java CheckEmailServlet.java : hàm kiểm tra
Hàm xử lý trong UserServlet.java UserServlet.java
Hàm java script kiểm tra mật khẩu và xác nhận mật khẩu có trùng khớ p hay không
Cấu trúc của form
4.2.4 Mã M ã nguồn use user thanh thanh toán toán
Sơ đồ Trang giỏ hàng thanh toán
CheckOut.jsp
Lựa chọn hình
CheckOutStep.jsp
thức thanh toán
Thanh toán qua
Thanh toán không
đăng ký
c ần đăng ký
Delivery.jsp
Logindeal.jsp
Thông tin thanh toán
Đưa vào xử lý
UserServlet.java
Đưa vào xử lý
DeliveryServlet.java
Vào trang thông
Trang cám ơn
tin thanh toán
Deal.jsp
ThankYouDelivery.jsp Đưa vào xử lý
CheckOutServlet.java Trang cám ơn
Thankyou.jsp
Lấy ý tưở ng ng từ trang bán hàng Lazada.vn để thuận tiện cho khách hàng khi mua hàng mà không cần phải đăng ký tài khoả n.
5. Giao diệ diện website 5.1 Trang chủ chủ
5.1 Giao diệ diện User Trang đăng nhậ p
Trang vừa đăng nhậ p
Trang thông tin của user :
Comment facebook
Code API comment facebook
Sản phẩm liên quan
Trang liên hệ
Trang giỏ hàng
Trang cho user chọn hình thức đăng ký, nếu user đã đăng ký rồ i sẽ tự động chuyển qua trang thông tin thanh toán ngay.