1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lập trình web Đề tài web quản lý quán cafe highlands

36 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Web Quản Lý Quán Cafe Highlands
Tác giả Nguyễn Quốc Duy, Nguyễn Khắc Thái
Người hướng dẫn Nguyễn Trung Hiếu
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Lập Trình Web
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 36
Dung lượng 2,63 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Quên mật khẩu Lưu trữ Admin lấy lại thông tin tài khoản bằng email cá nhân đã dùng để đăng ký tài khoản.. Quên mật khẩu Lưu trữ Quản lý lấy lại thông tin tài khoản bằng email cá nhân đ

Trang 1

BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH

BÁO CÁO ĐỒ ÁN MÔN: LẬP TRÌNH WEB

ĐỀ TÀI: WEB QUẢN LÝ QUÁN CAFE HIGHLANDSGiảng viên hướng dẫn: NGUYỄN TRUNG HIẾU

Trang 2

2 Sử dụng

- Spring MVC, MSSQL

- Hibernate, Validation, Upload File, Interceptor, Email

- HTML, CSS, Bootstrap và một vài thư viện được thiết kế sẵn

STT Công việc Loại Quy định/ Công thức liên quan

1 Đăng nhập Tra cứu Tài khoản bắt buộc tồn tại trong cơ sở dữ

liệu.

Điền đầy đủ và đúng tên đăng nhập và mật khẩu.

Quyền phân theo tài khoản truy cập.

2 Quên mật khẩu Lưu trữ Admin lấy lại thông tin tài khoản bằng email

cá nhân đã dùng để đăng ký tài khoản.

3 Quản lý tài

khoản

Lưu trữ Thêm, sửa tài khoản Khi xóa tài khoản cũng

phải xóa đi thông tin nhân viên và chỉ xóa khi nhân viên chưa thực hiện chức năng gì Khi nhân viên không còn làm ở quán nữa thì admin sẽ tiến hành khóa tài khoản nhân viên (trạng thái - Phải xác định rõ quyền hạn và email, số điện thoại cá nhân của nhân viên ngay lúc đăng ký thông tin Phải xác định rõ quyền hạn và email, số điện thoại cá nhân của nhân viên ngay lúc đăng ký thông tin.

Nếu nhân viên bị khóa tài khoản đồng nghĩa

là mất hết quyền hạn, người quản lý phải được thông báo về sự thay đổi trước khi xác

Trang 3

nhận thay đổi – 1).

4 Xem, tra cứu

danh sách tài

khoản

Tra cứu Xem danh sách tài khoản Có thể tra cứu dựa

theo tên đăng nhập.

5 Quản lý bảng

quyền

Lưu trữ Thêm, xóa, sửa quyền Chỉ xóa khi quyền đó

chưa được gán cho tài khoản nào.

6 Xem bảng

quyền

Tra cứu Xem danh sách bảng quyền.

- Nhóm quản lý:

STT Công việc Loại Quy định/ Công thức liên quan

1 Đăng nhập Tra cứu Tài khoản bắt buộc tồn tại trong cơ sở dữ

liệu.

Điền đầy đủ và đúng tên đăng nhập và mật khẩu.

Quyền phân theo tài khoản truy cập.

2 Quên mật khẩu Lưu trữ Quản lý lấy lại thông tin tài khoản bằng

email cá nhân đã dùng để đăng ký tài khoản.

3 Thay đổi thông

tin cá nhân

Lưu trữ Được sửa mật khẩu, thêm/ sửa email 2 và số

điện thoại 2 Mật khẩu chỉ được đổi khi nhập đúng mật khẩu cũ.

Trang 4

4 Quản lý nhân

viên

Lưu trữ Thêm, xóa, sửa thông tin nhân viên Chỉ xóa

chỉ khi nhân viên chưa thực hiện chức năng gì.

5 Xem, tra cứu

danh sách nhân

viên

Tra cứu Quản lý được xem thông tin của tất cả nhân

viên Tìm kiếm dựa theo mã nhân viên, tên nhân viên.

6 Quản lý sản

phẩm, loại sản

phẩm

Lưu trữ Thêm, xóa, sửa sản phẩm Sản phẩm bắt

buộc phải thuộc loại sản phẩm nào đó Nếu

là loại mới thì phải tạo loại sản phẩm mới

Có thể sửa, xóa loại nếu chưa gán với sản phẩm nào Xóa sản phẩm khi chưa được sử dụng.

7 Quản lý size Lưu trữ Thêm, xóa, sửa size Xóa khi chưa được sử

Tra cứu Hiển thị thông tin sản phẩm ở giao diện bán

hàng phải có đủ 3 thông tin tối thiểu: tên sản phẩm, mã sản phẩm, giá.

Tra cứu công thức theo một phần nội dung công thức.

Trang 5

Lưu trữ Thêm, xóa khuyến mãi.

Không cho phép áp dụng chung các chương trình khuyến mãi khác nhau tại 1 thời điểm Ghi rõ thời gian bắt đầu và thời gian kết thúc đợt khuyến mãi, không chồng thời gian lên các đợt khuyến mãi khác.

Phần trăm khuyến mãi từ 0 - 100%

12 Xem, tra cứu

danh sách

khuyến mãi

Tra cứu Xem danh sách khuyến mãi.

Tra cứu thông tin các đợt khuyến mãi theo thời gian.

13 Nhập hàng Lưu trữ Chỉ lập phiếu nhập hàng khi nhận hàng thành

công và lưu trữ biên nhận hàng để đối chiếu sau này

Trang 6

14 Quản lý nguyên

liệu

Lưu trữ Quản lý có thể thêm, xóa, sửa nguyên liệu

Nguyên liệu chỉ xóa khi chưa được nhập lần nào Vào cuối mỗi ngày thì sẽ có vài nhân viên phụ trách kiểm kê lại nguyên liệu và thông báo để quản lý sửa số lượng tồn Số lượng tồn sẽ tự động cộng khi nhập hàng và trừ khi bán hàng.

15 Xem, tra cứu

Hóa đơn được tạo trong lúc khách order, hân viên kiểm tra và xác nhận khách hàng đã thanh toán trước khi lưu hóa đơn.

Hóa đơn đã thanh toán không đổi trả Hóa đơn có tối thiểu các thông tin sau: tên cửa hàng, thời gian tạo hóa đơn, mã nhân viên lập, sản phẩm cùng số lượng và đơn giá tương ứng, tổng tiền, mã khuyến mãi, tổng tiền khách cần trả sau khuyến mãi.

Công thức tính tổng số tiền mà khách phải trả= tổng các (số lượng)*(đơn giá hiện thời)*(phần trăm giảm giá nếu có khuyến mãi) của sản phẩm.

Tiền thối = tiền khách trả - tổng tiền.

17 Quản lý hóa đơn Lưu trữ Cho phép hủy đơn Đơn chỉ được hủy khi:

khách hàng chưa thanh toán nhưng nhân viên

đã lưu lại hóa đơn … hoặc những trường hợp bất khả kháng khác

Trang 7

18 Xem danh sách

hóa đơn/ chi tiết

hóa đơn

Tra cứu Hiển thị tất cả hóa đơn theo thời gian (thời

gian mặc định theo ngày).

19 Thống kê doanh

thu

Tính toán Doanh thu là tổng tiền thu được sau một

khoảng thời gian: hôm nay, 7 ngày, 31 ngày,

STT Công việc Loại Quy định/ Công thức liên quan

1 Đăng nhập Tra cứu Tài khoản bắt buộc tồn tại trong cơ sở dữ

liệu.

Điền đầy đủ tên đăng nhập và mật khẩu Quyền phân theo tài khoản truy cập.

2 Quên mật khẩu Lưu trữ Nhân viên lấy lại thông tin tài khoản bằng

email cá nhân đã dùng để đăng ký tài khoản.

3 Thay đổi thông

tin cá nhân

Lưu trữ Được sửa mật khẩu, thêm/ sửa email 2 và

số điện thoại 2 Mật khẩu chỉ được đổi khi nhập đúng mật khẩu cũ.

Trang 8

4 Xem, tra cứu

danh sách sản

phẩm, loại, công

thức

Tra cứu Hiển thị thông tin sản phẩm ở giao diện

bán hàng phải có đủ 3 thông tin tối thiểu:

tên sản phẩm, mã sản phẩm, giá.

Tra cứu sản phẩm hoặc loại sản phẩm theo tên hoặc mã Tra cứu công thức theo mã công thức.

phiếu nhập hàng khi nhận hàng thành công và lưu trữ biên nhận hàng

để đối chiếu sau này.

sách nguyên liệu

Tra cứu Xem thông tin các

nguyên liệu, tra cứu theo mã.

thanh toán (bán hàng)

Lưu trữ, tính toán Tương tự như phần

bán hàng của quản lý

- TAIKHOAN (TENDANGNHAP, MATKHAU, TRANGTHAI)

- QUYEN (MAQUYEN, TENQUYEN )

- SANPHAM (MASP, TEN , HINHANH)

- LOAISP (MALOAI, TENLOAI )

- SIZE (MASIZE, TENSIZE )

- CONGTHUC (MACT, NGAYLAP, CONGTHUC)

- LICHSU (THOIGIAN, MASP, MASIZE, GIATHAYDOI)

- KHUYENMAI (MAKM, TGBD, TGKT)

- PHIEUNHAPHANG (MANH, NGAYNHAP)

- NGUYENLIEU (MANL, TEN , DONVI, SLTON)

- HOADON (ID, NGAYLAP, TONGTIEN, PHANLOAI)

Trang 9

● ERD

● Mô hình dữ liệu quan hệ

- NHANVIEN ( MANV (TENDANGNHAP) , HO, TEN, GT, NGAYSINH, DIACHI, EMAIL1, EMAIL2, SDT1, SDT2)

- QUANLY (MANVQL)

- ADMIN (MAADMIN)

- TAIKHOAN ( TENDANGNHAP (MANV) , MATKHAU, MAQUYEN ,

TRANGTHAI)

- QUYEN (MAQUYEN, TENQUYEN )

- SANPHAM (MASP, TEN , HINHANH, MALOAI )

- LOAISP (MALOAI, TENLOAI )

- SIZE (MASIZE, TENSIZE )

- CONGTHUC (MACT, NGAYLAP, CONGTHUC)

- CT_SANPHAM ( MASP, MASIZE, MACT , GIAHIENTHOI)

- LICHSU (THOIGIAN, MASP, MASIZE , GIATHAYDOI)

- KHUYENMAI (MAKM, TGBD, TGKT)

- CT_KHUYENMAI ( MASP, MASIZE, MAKM , PHANTRAM)

- PHIEUNHAPHANG (MANH, NGAYNHAP, MANV )

- CT_PHIEUNHAP ( MANH, MANL , SOLUONG, DONGIA)

- NGUYENLIEU (MANL, TEN , DONVI, SLTON)

- CT_NGUYENLIEU ( MASP, MASIZE, MANL , SOLUONG)

- HOADON (ID, NGAYLAP, TONGTIEN, PHANLOAI, MANV, MAKM )

- CT_HOADON ( ID, MASP, MASIZE , SOLUONG)

Trang 11

4 Thống kê doanh thu

5 Quản lý hóa đơn

Trang 12

III Tính Năng

1

2

3 Lọc sản phẩm trong giao diện bán hàng

- Giúp người sử dụng lọc các mặt hàng theo loại, sử dụng các data attribute và được xử

lý ngay trên view để không phải tải lại trang nhiều lần

4 Chọn sản phẩm

- Khi nhấn vào một sản phẩm bất kỳ thì ô sản phẩm sẽ chuyển thành ô lựa chọn.

- L, M, S đại diện cho size của sản phẩm đang chọn (nếu có).

- Hai nút + và – sử dụng cho việc tăng giảm số lượng sản phẩm.

- Nhấn Add sẽ đưa sản phẩm vào khu vực chọn ở phía bên phải màn hình, trong khi đó Reset sẽ đưa số lượng và size

về giá trị mặc định ban đầu.

- Phụ thuộc vào số nguyên liệu còn lại trong kho mà sản phẩm

có thể chọn được hoặc không.

Ví dụ để pha phin đen đá cần 02 “phần cà phê 25 gram” nhưng chỉ còn lại 01 trong kho thì nút + và Add sẽ không hoạt động.

5 Giỏ hàng

- Các sản phẩm sau khi được chọn sẽ xuất hiện ở đây.

- Trong từng mặt hàng cũng ghi rõ đơn giá cũng như thành tiền

để nhân viên tiện theo dõi.

- Ngoài cùng bên phải của mỗi hàng là một check-box Nếu tích vào đó thì sản phẩm

sẽ được hủy khỏi giỏ hàng (chỉ sử dụng được một lần, không thể tích chọn lại để hoàn tác, muốn chọn lại sản phẩm vừa hủy thì sử dụng chức năng chọn sản phẩm để tạo lại).

Trang 13

- “Tổng cộng” sẽ được cập nhật sau mỗi lần thêm hoặc hủy chọn một mặt hàng.

- Không thể ấn nút xác nhận nếu giỏ hàng trống!

- Sau khi ấn xác nhận sẽ hiện ra một nút “Thanh Toán” Khi hoàn tất thanh toán, dựa trên chi tiết nguyên liệu để tạo ra một sản phẩm để tự động cập nhật lại số liệu của nguyên liệu.

6 Hóa đơn và Công thức

- Sau khi nhấn thanh toán, giao diện này được hiện lên Hóa đơn ở phía bên phải còn công thức cho đơn hàng nằm ở bên trái.

- Đã thực hiện căn chỉnh để khi sử dụng Ctrl + P sẽ in ra được hóa đơn phù hợp.

- Một nửa sẽ giao cho khách hàng và một nửa được mang vào trong cho nhân viên pha chế.

- Dữ liệu được lấy từ các data attribute trong giỏ hàng, đưa lên lớp overlay để hiển thị thay vì lưu xuống CSDL và đưa lên một view khác.

Trang 14

7 Trạng thái hóa đơn

- Trạng thái màu xanh là bình thường còn màu xám là bị hủy.

- Dựa vào data attribute của từng đơn để xác định những hóa đơn bị thay đổi trạng thái, không lưu lại toàn bộ vào CSDL.

- Khi ấn nút xác nhận, sẽ hiện thông báo và tiến hành lưu vào CSDL.

Trang 15

8 Thống kê doanh thu

- Khá đơn giản và chỉ có chức năng lọc doanh thu theo các mốc thời gian.

- Dữ liệu được đưa từ controller lên view và xử lý bằng JS để không tải lại trang nhiều lần.

- Doanh thu thống kê dựa vào các hóa đơn có trạng thái là bình thường.

- Mục top 5 sẽ hiển thị các sản phẩm chạy nhất trong khoảng thời gian được chọn.

IV Giải thích code

1 Đăng nhập

Phần view sử dụng Tệp “dangnhap.jps” định dạng UTF-8 Để chứa giao diện người dùng cho trang đăng nhập vào hệ thống Highlands Dưới đây là mô tả ngắn gọn về các thànhphần và chức năng chính của mã:

- Trong thẻ head, có các thẻ meta để thiết lập các thông tin meta của trang, các thẻ link

để liên kết đến các tệp CSS và thẻ title để đặt ti êu đề của trang

- Trong thẻ body, có một div chứa nội dung chính của trang đăng nhập Giao diện được chia thành hai phần: một phần hiển thị hình nền và một phần chứa biểu mẫu đăng nhập

- Biểu mẫu đăng nhập có hai trường nhập liệu: tên đăng nhập và mật khẩu Dữ liệu được gửi đến đường dẫn "/login/logininfo.htm" bằng phương thức POST khi người dùng nhấp vào nút "ĐĂNG NHẬP"

- Dưới biểu mẫu, có hai thẻ p5 để hiển thị thông báo thành công và thông báo lỗi, được truyền từ phía server thông qua các thuộc tính "message1" và "message0"

Trang 16

- Cuối cùng, có các tệp JavaScript được liên kết để cung cấp các chức năng tương tác

và tạo hiệu ứng cho trang

Tệp “TaiKhoan.java” là một lớp Java được chú thích bằng @Entity, đây là một lớp tham gia vào quá trình ánh xạ đối tượng-cơ sở dữ liệu.Lớp TaiKhoan có các thuộc tính và phương thức sau:

- Thuộc tính "TENDANGNHAP": Đây là một chuỗi (String) đại diện cho tên đăng nhập của tài khoản Nó có chú thích @Id, xác định rằng đây là khóa chính của bảng Cột tương ứng trong cơ sở dữ liệu có kiểu dữ liệu "nvarchar(10)"

- Thuộc tính "MATKHAU": Đây là một chuỗi (String) đại diện cho mật khẩu của tài khoản Giá trị của thuộc tính này sẽ được lưu trữ trong cột "MATKHAU" trong cơ sở dữ liệu

- Thuộc tính "TRANGTHAI": Đây là một biến kiểu boolean đại diện cho trạng thái của tài khoản (hoạt động hay không hoạt động) Nó có chú thích @Column, chỉ định tên cột

là "TRANGTHAI" trong cơ sở dữ liệu Thuộc tính này được đánh dấu là public, nghĩa là nó

có thể truy cập trực tiếp từ bên ngoài lớp

- Thuộc tính "nhanvien": Đây là một đối tượng kiểu NhanVien Mối quan hệ giữa lớp TaiKhoan và NhanVien là một-đến-một (One-to-One) Điều này được chỉ định bằng chú thích @OneToOne và @JoinColumn Thuộc tính "TENDANGNHAP" của bảng TaiKhoan tương ứng với cột "MANV" (Mã nhân viên) của bảng NhanVien trong cơ sở dữ liệu

- Thuộc tính "quyen": Đây là một đối tượng kiểu Quyen (lớp khác trong chương trình) Mối quan hệ giữa lớp TaiKhoan và Quyen là nhiều-đến-một (Many-to-One) Điều này được chỉ định bằng chú thích @ManyToOne và @JoinColumn Thuộc tính

"MAQUYEN" của bảng TaiKhoan tương ứng với cột "MAQUYEN" (Mã quyền) của bảng Quyen trong cơ sở dữ liệu

- Phương thức getter và setter cho các thuộc tính trên

Đoạn mã định nghĩa một lớp đại diện cho bảng "TAIKHOAN" trong cơ sở dữ liệu và cung cấp các phương thức để truy cập và cập nhật dữ liệu của bảng này thông qua các đối tượng TaiKhoan

Tệp “LoginController.java” Đoạn mã này định nghĩa một lớp Java được chú thích bằng @Controller Đoạn mã xử lý các yêu cầu liên quan đến đăng nhập và quên mật khẩu trong ứng dụng

- Thuộc tính "manv": Đây là một biến static kiểu String, được sử dụng để lưu trữ mã nhân viên đăng nhập

- Thuộc tính "mailer": Đây là một đối tượng được tự động kết hợp (injected) bằng

@Autowired từ lớp Mailer Đối tượng này được sử dụng để gửi email trong quá trình đặt lại mật khẩu

Trang 17

- Thuộc tính "factory": Đây là một đối tượng SessionFactory được tự động kết hợp (injected) bằng @Autowired SessionFactory được sử dụng để tạo và quản lý các phiên (session) với cơ sở dữ liệu.

- Phương thức "forget": Xử lý yêu cầu trang quên mật khẩu Trả về tên view

"Authority/forget" để hiển thị giao diện cho người dùng

- Phương thức "login": Xử lý yêu cầu đăng nhập Lấy thông tin người dùng từ request (username và password), kiểm tra xem thông tin đăng nhập có hợp lệ không Nếu hợp lệ, đăng nhập thành công và chuyển hướng người dùng đến các trang tương ứng với vai trò của tài khoản Nếu không hợp lệ, hiển thị thông báo lỗi và chuyển hướng người dùng đến trang đăng nhập

- Phương thức "logout": Xử lý yêu cầu đăng xuất Xóa thông tin đăng nhập của người dùng và chuyển hướng đến trang đăng nhập

- Phương thức "taoMatKhau": Tạo một mật khẩu ngẫu nhiên

- Phương thức "reset": Xử lý yêu cầu đặt lại mật khẩu Lấy thông tin email và tên đăngnhập từ request Kiểm tra xem email và tên đăng nhập có khớp với dữ liệu trong cơ sở dữ liệu không Nếu khớp, tạo một mật khẩu mới, cập nhật mật khẩu trong cơ sở dữ liệu và gửi email chứa mật khẩu mới đến người dùng Nếu không khớp, hiển thị thông báo lỗi.Đoạn mã định nghĩa một điều khiển (controller) để xử lý các yêu cầu liên quan đến đăng nhập và quên mật khẩu trong ứng dụng web

Tệp “QUYEN.java” định nghĩa một entity class trong Java, đại diện cho bảng

"QUYEN" trong cơ sở dữ liệu Dưới đây là mô tả ngắn gọn về các thành phần và chức năng chính của mã:

- Đối tượng `Quyen` được đánh dấu bằng annotation `@Entity`, cho biết đây là một entity class

- Annotation `@Table(name = "QUYEN")` được sử dụng để xác định tên của bảng trong cơ sở dữ liệu mà entity này tương ứng

- Thuộc tính `MaQuyen` được đánh dấu bằng annotation `@Id`, cho biết đây là khóa chính của entity

- Annotation `@Column(name = "MAQUYEN")` được sử dụng để xác định tên cột tương ứng với thuộc tính `MaQuyen`

- Thuộc tính `TENQUYEN` được đánh dấu bằng annotation `@Column(name =

"TENQUYEN")`, cho biết đây là một cột trong bảng "QUYEN"

- Mối quan hệ giữa entity `Quyen` và `TaiKhoan` được thiết lập bằng cách sử dụng annotation `@OneToMany` Mỗi đối tượng `Quyen` có một tập hợp các đối tượng

`TaiKhoan` liên quan thông qua trường `taikhoan` Mối quan hệ này được xác định qua thuộc tính `quyen` trong entity `TaiKhoan`

Trang 18

- Thuộc tính `taikhoan` được đánh dấu bằng annotation `@OneToMany` và

`@JoinColumn`, xác định tên trường liên kết với mối quan hệ và cách fetch dữ liệu từ cơ sở

Đoạn mã định nghĩa entity class `Quyen`, mô tả cấu trúc và quan hệ của bảng

"QUYEN" trong cơ sở dữ liệu và cung cấp các phương thức để thao tác với dữ liệu của entity này

2 Quản lý tài khoản

Phần view và phần package entity đều khá giống nhau nên trong báo cáo này sẽ khôngtiếp tục nói rõ, chỉ phân tích các package Controller

Tệp “AccountController.java” là tệp cấu hình của quản lý tài khoản bao gồm các chức năng thêm xóa sửa tài khoản, nhân viên

1 Phương thức `LayDanhSachTaiKhoan()` lấy danh sách tất cả các tài khoản từ cơ sở

dữ liệu bằng cách sử dụng Hibernate Nó tạo một truy vấn HQL (Hibernate Query

Language) và trả về kết quả dưới dạng một danh sách `List<TaiKhoan>`

2 Phương thức `taoMatKhau()` tạo một mật khẩu ngẫu nhiên Nó sử dụng một đối tượng `Random` để tạo một số ngẫu nhiên trong khoảng từ 100000 đến 999999, sau đó chuyển số đó thành một chuỗi và trả về

3 Phương thức `getQuyen()` được chú thích bằng `@ModelAttribute("aus")` Nó lấy danh sách các quyền (loại tài khoản) từ cơ sở dữ liệu bằng cách sử dụng Hibernate và trả về kết quả dưới dạng một danh sách `List<Quyen>` Giá trị của danh sách này được thêm vào model với tên thuộc tính là `"aus"`

4 Phương thức `getTrangThai()` được chú thích bằng

`@ModelAttribute("trangthai")` Nó lấy danh sách trạng thái (status) của tài khoản từ cơ sở

dữ liệu bằng cách sử dụng Hibernate và trả về kết quả dưới dạng một danh sách

`List<TaiKhoan>` Giá trị của danh sách này được thêm vào model với tên thuộc tính là

`"trangthai"`

5 Phương thức `dstaikhoan(ModelMap model)` được chú thích bằng

`@RequestMapping("list")` Phương thức này xử lý yêu cầu hiển thị danh sách tài khoản Nóthêm các thuộc tính vào model, bao gồm `"btnStatus"` với giá trị `"btnAdd"`, `"tk"` với một

Ngày đăng: 15/02/2025, 22:24

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm