Xây dựng dịch vụ mạng cho website bán thức ăn bằng Struts2

Tài liệu nghiên cứu Xây dựng dịch vụ mạng xây dựng dự án struts2 website bán thức ăn, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về kỹ thuật.

Trường đại học

Trường Đại Học An Giang

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

dự án

2022

55
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

MỤC LỤC

DANH SÁCH HÌNH ẢNH

DANH SÁCH BẢNG

1. PHẦN 1: XÂY DỰNG SERVER

1.1. Cài đặt hệ điều hành Ubuntu

1.2. Cài đặt và cấu hình Webserver, CGI

1.3. Cài đặt Eclipse

1.4. Cài đặt và cấu hình Tomcat

1.5. Cài đặt MySQL-Server

1.6. Cài đặt Dbeaver kết nối mysql

2. PHẦN 2: XÂY DỰNG DỰ ÁN STRUTS2

2.1. Chức năng

2.2. Tóm tắt các file chương trình

Tóm tắt

I. Giới thiệu về dịch vụ mạng xây dựng website bán thức ăn

Dịch vụ mạng xây dựng website bán thức ăn với Struts2 là một giải pháp hiệu quả cho các nhà hàng và doanh nghiệp thực phẩm. Việc xây dựng website bán thức ăn không chỉ giúp tăng cường sự hiện diện trực tuyến mà còn tạo điều kiện thuận lợi cho việc quản lý đơn hàng và giao hàng. Thiết kế website bán đồ ăn cần phải chú trọng đến giao diện người dùng, tính năng thân thiện và khả năng tương tác cao. Một website được thiết kế tốt sẽ thu hút khách hàng và tạo ra trải nghiệm mua sắm trực tuyến mượt mà.

1.1. Tầm quan trọng của website bán thức ăn

Trong thời đại số hóa, việc có một web bán đồ ăn online là rất cần thiết. Khách hàng ngày càng ưa chuộng việc đặt hàng trực tuyến, do đó, một website chất lượng sẽ giúp doanh nghiệp tiếp cận được nhiều khách hàng hơn. Dịch vụ website nhà hàng không chỉ giúp tăng doanh thu mà còn nâng cao sự hài lòng của khách hàng thông qua việc cung cấp thông tin chi tiết về thực đơn và dịch vụ giao hàng.

II. Cấu trúc và chức năng của website

Website bán thức ăn được xây dựng trên nền tảng Struts2 framework với các chức năng chính như quản lý sản phẩm, đơn hàng và người dùng. Phát triển web Struts2 cho phép tạo ra các ứng dụng web mạnh mẽ và dễ bảo trì. Các chức năng như quản lý đơn hàng trực tuyếnđặt món ăn trực tuyến là những yếu tố quan trọng giúp tối ưu hóa quy trình kinh doanh. Hệ thống cũng cần tích hợp các phương thức thanh toán trực tuyến để tạo sự thuận tiện cho khách hàng.

2.1. Chức năng quản lý sản phẩm

Chức năng quản lý sản phẩm cho phép admin thêm, sửa, xóa các món ăn trong thực đơn. Điều này giúp đảm bảo rằng thông tin trên website luôn được cập nhật và chính xác. Ứng dụng web bán đồ ăn cần có giao diện dễ sử dụng để admin có thể thao tác nhanh chóng. Hệ thống cũng cần có khả năng lưu trữ và truy xuất thông tin một cách hiệu quả để phục vụ cho việc quản lý.

III. Tích hợp thanh toán và bảo mật

Một trong những yếu tố quan trọng của website bán thức ăn là khả năng tích hợp thanh toán trực tuyến. Việc này không chỉ giúp khách hàng dễ dàng thanh toán mà còn tăng cường tính bảo mật cho giao dịch. Bảo mật website bán đồ ăn là một yếu tố không thể thiếu, bao gồm việc mã hóa thông tin và bảo vệ dữ liệu khách hàng. Các biện pháp bảo mật cần được thực hiện để ngăn chặn các cuộc tấn công mạng và bảo vệ thông tin nhạy cảm.

3.1. Các phương thức thanh toán

Website cần hỗ trợ nhiều phương thức thanh toán khác nhau như thẻ tín dụng, ví điện tử và chuyển khoản ngân hàng. Điều này không chỉ tạo sự thuận tiện cho khách hàng mà còn giúp tăng tỷ lệ chuyển đổi. Tích hợp thanh toán trực tuyến cần được thực hiện một cách an toàn và hiệu quả để đảm bảo rằng mọi giao dịch đều được xử lý nhanh chóng và chính xác.

IV. Giao diện và trải nghiệm người dùng

Giao diện của website bán thức ăn cần phải thân thiện và dễ sử dụng. Giao diện website bán đồ ăn nên được thiết kế sao cho người dùng có thể dễ dàng tìm kiếm và đặt hàng. Một website responsive sẽ giúp người dùng có trải nghiệm tốt hơn trên các thiết bị khác nhau. Việc tối ưu hóa SEO cho website cũng rất quan trọng để tăng khả năng hiển thị trên các công cụ tìm kiếm.

4.1. Tối ưu hóa SEO

Tối ưu hóa SEO cho website bán thức ăn là một yếu tố quan trọng để thu hút lưu lượng truy cập. Các từ khóa liên quan đến website bán đồ ăn cần được sử dụng một cách hợp lý trong nội dung và cấu trúc của website. Việc này không chỉ giúp cải thiện thứ hạng tìm kiếm mà còn tạo ra cơ hội tiếp cận khách hàng tiềm năng.

01/02/2025

Trích đoạn nội dung tài liệu

TRƯỜNG ĐẠI HỌC AN GIANG KHOA CÔNG NGHỆ THÔNG TIN XÂY DỰNG DỊCH VỤ MẠNG Xây dựng dự án struts2 Website bán thức ăn Huỳnh Trung Nhân Thái Thiên Tân Lê Đặng Tony Trần Thể Nhân GV: Ths. Huỳnh Cao Thế Cường AN GIANG, 12-2022 TRƯỜNG ĐẠI HỌC AN GIANG KHOA CÔNG NGHỆ THÔNG TIN XÂY DỰNG DỊCH VỤ MẠNG Xây dựng dự án struts2 Website bán thức ăn Huỳnh Trung Nhân – DTH195162 Thái Thiên Tân – DTH195186 Lê Đặng Tony – DTH195177 Trần Thể Nhân – DTH 195325 GV: Ths. Huỳnh Cao Thế Cường AN GIANG, 12-2022 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Giảng viên hướng dẫn (ký và ghi rõ họ tên) i MỤC LỤC ii DANH SÁCH HÌNH ẢNH iii DANH SÁCH BẢNG iv PHẦN 1: XÂY DỰNG SERVER 1. Cài đặt hệ điều hành Ubuntu: - Bước 1: Cài đặt VMWare worsktation: Password: 123 - Bước 2: Cài đặt hệ điều hành Ubuntu: 1 Password:123 2.

Cài đặt và cấu hình Webserver, CGI: - Cập nhật gcc: Sudo apt update Sudo apt upgrade 2 - Cài đặt apache2: sudo apt-get install apache2 Hình 1. Lệnh cài đặt apache2. 3 - Cho phép module CGI hoạt động và khởi động lại apache2: Sudo a2enmod cgi Systemctl restart apache2 - Cài đặt ssh: Sudo apt-get clean Sudo apt-get update Sudo apt-get install openssh-server 4 - Cho phép ssh hoạt động: Sudo systemctl enable ssh - Khởi động ssh: Sudo systemctl start ssh Sudo systemctl status ssh 5 - Cài đặt bộ công cụ thiết yếu: Sudo apt install build-essential - Cài đặt nettools: Sudo apt install net-tools 6 - Kiểm tra IP máy: 192. Cài đặt Eclipse: 7 4.

Cài đặt và cấu hình Tomcat: Sudo apt install default-jdk 8 - Cài đặt Tomcat9: Sudo apt install tomcat 9 9 - Cài Tomcat9 admin: Sudo apt install tomcat9-admin 10 - Khởi động dịch vụ Tomcat: Sudo systemctl enable tomcat9. - Chạy thử trên localhost: 11 http://192.129:8080/ - Tạo user tomcat: chạy lệnh sudo nano /etc/tomcat9/tomcat-users.xml - Thêm đoạn mã vào cuối tập tin: + Ấn Ctrl + O và Enter để lưu. - Khởi động lại tomcat: - Truy cập trang quản lý ứng dụng của Tomcat: http://192.129:8080/manager/html với 13 Username : tomcat Password: tomcat 5. Cài đặt MySQL-Server: - Cập nhật Repository: Sudo apt-get update 14 - Cài đặt mysql-server chạy lệnh: sudo apt-get install mysql-server - Cài đặt phpMyAdmin chạy lệnh: sudo apt-get install phpmyadmin + Di chuyển dấu đỏ đến mục apache2, nhấn phím Space (khoảng cách).

15 + Nhấn phím Tab để chọn sang nút OK Enter. 16 17 - Cấu hình cho phép truy xuất Phpmyadmin từ xa chạy lệnh: sudo nano /etc/mysql/mysql.cnf - Đánh dấu # trước dòng bind-address, lưu Ctr + O thay đổi, Ctrl + X thoát ra. Khởi động lại mysql chạy lệnh: sudo systemctl restart mysql - Tạo user đăng nhập phpMyAdmin: + Đăng nhập vào mysql chạy lệnh: sudo mysql -u root –p 18 + Gõ các lệnh như sau: CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'p@ssword'; CREATE USER 'dbuser'@'%' IDENTIFIED BY ‘p@ssword'; GRANT ALL ON *.* TO 'dbuser'@'localhost'; GRANT ALL ON *.* TO 'dbuser'@'%'; 19 - Cài đặt Dbeaver kết nối mysql: 20 - Chọn Edit Driver Settings và bổ sung thư viện mysql-connector-java-8.jar - Thêm cấu hình: useSSL=false và allowPublicKeyRetrieval=true 21 - Kết nối đến database: Tạo 1 bảng TAIKHOAN với các cột là taikhoan, matkhau, quyen 22 Set Khóa chính (Primary) cho cột ID 23 Tương tự như bảng TAIKHOAN, tạo thêm 2 bản tương tự với tên MONAN và DATMON. Tiến hành kiểm soát dữ liệu.

24 Phần 2: XÂY DỰNG DỰ ÁN STRUTS2 1. Chức năng: + Người dùng: đăng nhập và đặt sản phẩm. + Admin:  Quản lí sản phẩm: thêm, xóa, sửa sản phẩm.  Quản lí người dùng: thêm, xóa, sửa quyền user.

 Quản lí đơn hàng: xem danh sách đơn hàng và chi tiết đơn hàng. Hạn chế: + Đăng nhập tài khoản thì không đăng xuất được phải đợi session hủy hoặc restart server mới đăng nhập được tài khoản khác. + Giao diện chưa được bắt mắt. + Đăng nhập được 1 lúc tự logout.

+ Chức năng quản lí đơn hàng còn sơ sài. Tóm tắt các file chương trình: - Cây thư mục: 25 Hình 2. Cây thư mục dự án. Cây thư mục dự án.java: khai báo các thuộc tính của 1 đơn hàng.

package Model; public class Order { int id; int idnguoidung; int idmonan; int soluong; int gia; int thanhtien; String trangthai; public Order(int id, int idnguoidung, int idmonan, int soluong, int gia, int thanhtien, String trangthai) { super(); this.id= id; this.idnguoidung = idnguoidung; this.idmonan = idmonan; this.soluong = soluong; this.gia = gia; this.thanhtien = thanhtien; 27 this.trangthai = trangthai; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getIdnguoidung() { return idnguoidung; } public void setIdnguoidung(int idnguoidung) { this.idnguoidung = idnguoidung; } public int getIdmonan() { return idmonan; } public void setIdmonan(int idmonan) { this.idmonan = idmonan; } public int getSoluong() { return soluong; } public void setSoluong(int soluong) { this.soluong = soluong; } public int getGia() { return gia; } public void setGia(int gia) { this.gia = gia; } public int getThanhtien() { return thanhtien; } public void setThanhtien(int thanhtien) { this.thanhtien = thanhtien; } public String getTrangthai() { return trangthai; } public void setTrangthai(String trangthai) { this.trangthai = trangthai; } } - OrderDAO.java: khai báo các câu truy vấn đến bảng Order. package DAO; import java.PreparedStatement; 28 import java.ResultSet; import java.SQLException; import java.ArrayList; import java.List; import Model.Order; public class OrderDAO { public List<Order> getList(){ List<Order> list=new ArrayList<Order>(); DBService db=new DBService(); PreparedStatement statement; try { statement = db.prepareStatement("SELECT * from DATMON"); ResultSet rs=db.executeQuery(statement); if(rs!=null) { while(rs.add( new Order(rs.getString("trangthai"))); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); 29 } return list; } public void accept(int id) { // TODO Auto-generated method stub DBService db=new DBService(); PreparedStatement statement; try { statement = db.executeUpdate(statement); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void deny(int id) { // TODO Auto-generated method stub DBService db=new DBService(); PreparedStatement statement; try { statement = db.executeUpdate(statement); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 30 public Order getOrderByID(int id) { Order order=null; DBService db=new DBService(); PreparedStatement statement; try { statement = db.setInt(1, id); ResultSet rs=db.executeQuery(statement); if(rs!=null) { while(rs.next()) { order=new Order(rs.getString("trangthai")); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return order; } } - OrderAction.java: thực thi các câu truy vấn trong file OrderDAO.java 31 package Action; import java.List; import java.Map; import org.SessionAware; import com.ActionSupport; import DAO.FoodDAO; import DAO.OrderDAO; import DAO.UserDAO; import Model.Food; import Model.Order; import Model.User; public class OrderAction extends ActionSupport implements SessionAware { private Map<String, Object> session; private List<Order> orderlist; private Order order; private User user; private Food food; private String message; int id; int idnguoidung; int idmonan; int soluong; int gia; int thanhtien; String trangthai; 32 public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Map<String, Object> getSession() { return session; } public void setSession(Map<String, Object> session) { this.session = session; } public List<Order> getOrderlist() { return orderlist; } public void setOrderlist(List<Order> orderlist) { this.orderlist = orderlist; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getIdnguoidung() { return idnguoidung; 33 } public void setIdnguoidung(int idnguoidung) { this.idnguoidung = idnguoidung; } public int getIdmonan() { return idmonan; } public void setIdmonan(int idmonan) { this.idmonan = idmonan; } public int getSoluong() { return soluong; } public void setSoluong(int soluong) { this.soluong = soluong; } public int getGia() { return gia; } public void setGia(int gia) { this.gia = gia; } public int getThanhtien() { return thanhtien; } public void setThanhtien(int thanhtien) { this.thanhtien = thanhtien; } public String getTrangthai() { return trangthai; } public void setTrangthai(String trangthai) { 34 this.trangthai = trangthai; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Food getFood() { return food; } public void setFood(Food food) { this.food = food; } public String list() { orderlist=new OrderDAO().getOrderByID(id); return SUCCESS; } } - User.java: khai báo thuộc tính của 1 user. package Model; public class User { int id; String tendangnhap,loaiquyen; public User(int id, String tendangnhap, String loaiquyen) { super(); this.id = id; this.tendangnhap = tendangnhap; this.loaiquyen = loaiquyen; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTendangnhap() { return tendangnhap; } public void setTendangnhap(String tendangnhap) { this.tendangnhap = tendangnhap; } public String getLoaiquyen() { return loaiquyen; } public void setLoaiquyen(String loaiquyen) { this.loaiquyen = loaiquyen; } 36 } - UserDAO.java: khai báo các câu truy vấn đến bảng User. package DAO; import java.PreparedStatement; import java.ResultSet; import java.SQLException; import java.ArrayList; import java.List; import Model.Food; import Model.User; public class UserDAO { public User login(String tendangnhap, String matkhau) { User nd=null; DBService db=new DBService(); PreparedStatement statement; try { statement = db.getMd5(matkhau) ); ResultSet rs=db.executeQuery(statement); if(rs!=null) { while(rs.next()) { nd=new User(rs.getString("loaiquyen")); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return nd; } public List<User> getList(){ List<User> list=new ArrayList<User>(); DBService db=new DBService(); PreparedStatement statement; try { statement = db.prepareStatement("SELECT * from NGUOIDUNG"); ResultSet rs=db.executeQuery(statement); if(rs!=null) { while(rs.add( new User(rs.getString("loaiquyen"))); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } 38 return list; } public User getUserByID(int id) { User user=null; DBService db=new DBService(); PreparedStatement statement; try { statement = db.setInt(1, id); ResultSet rs=db.executeQuery(statement); if(rs!=null) { while(rs.next()) { user=new User(rs.getString("loaiquyen")); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return user; } public void update(int id, String loaiquyen) { // TODO Auto-generated method stub DBService db=new DBService(); 39 PreparedStatement statement; try { statement = db.executeUpdate(statement); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void delete(int id) { DBService db=new DBService(); PreparedStatement statement; try { statement = db.executeUpdate(statement); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void insert(String tendangnhap, String matkhau, String loaiquyen) { DBService db=new DBService(); PreparedStatement statement; try { 40 statement = db.executeUpdate(statement); } catch (SQLException e) { // TODO Auto-generated catch block e.java: gọi và thực thi các câu truy vấn từ file UserDAO.

package Action; import java.File; import java.IOException; import java.List; import java.Map; import org.FileUtils; import org.ServletActionContext; import org.SessionAware; import com.ActionSupport; import DAO.FoodDAO; import DAO.UserDAO; import Model.User; public class UserAction extends ActionSupport implements SessionAware { 41 int id; String tendangnhap; String matkhau; public String getMatkhau() { return matkhau; } public void setMatkhau(String matkhau) { this.matkhau = matkhau; } String loaiquyen; private Map<String, Object> session; private List<User> userlist; private User user; private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public User getUser() { return user; } public void setUser(User user) { this.user = user; 42 } public List<User> getUserlist() { return userlist; } public void setUserlist(List<User> userlist) { this.userlist = userlist; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTendangnhap() { return tendangnhap; } public void setTendangnhap(String tendangnhap) { this.tendangnhap = tendangnhap; } public String getLoaiquyen() { return loaiquyen; } public void setLoaiquyen(String loaiquyen) { this.loaiquyen = loaiquyen; 43 } @Override public void setSession(Map<String, Object> session) { this.session = session; } public Map<String, Object> getSession() { return session; } public String list() { userlist = new UserDAO().update(id, loaiquyen); message = "Cập nhật thành công!"; return "list"; } 44

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài viết "Dịch vụ mạng xây dựng website bán thức ăn với Struts2" cung cấp cái nhìn tổng quan về việc phát triển một trang web thương mại điện tử chuyên bán thức ăn, sử dụng framework Struts2. Tác giả nhấn mạnh những lợi ích của việc sử dụng Struts2, bao gồm khả năng mở rộng, tính bảo mật cao và khả năng quản lý dễ dàng. Bài viết cũng đề cập đến các bước cần thiết để xây dựng một website hiệu quả, từ việc thiết kế giao diện đến tối ưu hóa SEO, giúp thu hút khách hàng và tăng doanh thu.

Để mở rộng kiến thức của bạn về lĩnh vực này, bạn có thể tham khảo thêm các tài liệu liên quan như Đồ án hcmute xây dựng website và kế hoạch kinh doanh cho hệ thống thương mại điện tử shopphukiengiare, nơi bạn sẽ tìm thấy thông tin chi tiết về việc lập kế hoạch kinh doanh cho một website thương mại điện tử. Ngoài ra, bài viết Luận văn thạc sĩ hệ thống thông tin quản lý xây dựng module phân loại món ăn hỗ trợ gợi ý chọn món trên website đặt hàng sẽ giúp bạn hiểu rõ hơn về cách tối ưu hóa trải nghiệm người dùng trên website bán thức ăn. Cuối cùng, bạn cũng có thể tìm hiểu về Báo cáo tốt nghiệp đề tài xây dựng website kinh doanh giày thể thao cho shop giày q a, để có thêm góc nhìn về việc phát triển website trong lĩnh vực bán lẻ. Những tài liệu này sẽ giúp bạn nắm bắt sâu hơn về các khía cạnh khác nhau của việc xây dựng và quản lý website thương mại điện tử.