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